
1.1 选中空白处右键 —> Create Database —> 输入数据库的名字 —>Create
注意:将Dtatabase charset设置为utf8
2.1 选中Tables右键 —> Create Table —> 输入表名(填写字段名称,类型,长度) —> Save
- 是指哪个字段添加了主键约束,哪个字段就是表里的唯一主键
- 主键约束:给字段添加primary key,约束了字段的值
- 特点是:字段值必须唯一+值不能为null
- 主键的值交给了数据库去管理,数据库会查到当前记录中的最大值+1
CREATE TABLE a( id INT PRIMARY KEY ); INSERT INTO a VALUES(10); INSERT INTO a VALUES(10);#不成功,此时值10已经存在 INSERT INTO a VALUES(NULL);#不成功,字段值不能为null
AUTO_INCREMENT:
主键自增策略:是指主键的值不需要程序员数,
交给数据库自增,给主键添加AUTO_INCREMENT:
CREATE TABLE a( id INT PRIMARY KEY AUTO_INCREMENT ); INSERT INTO a VALUES(NULL); INSERT INTO a VALUES(NULL); INSERT INTO a VALUES(NULL); SELECt * FROM a;3.2 非空约束
值不能为null,但是可以不唯一
CREATE TABLE user1( id INT PRIMARY KEY AUTO_INCREMENT, password1 INT NOT NULL );3.3 唯一约束
值必须唯一且可以为null
CREATE TABLE test( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) UNIQUE ); INSERT INTO test VALUES(NULL,'jenny'); INSERT INTO test VALUES(NULL,'lili');4.基础函数 4.1概述
类似于java中的方法,也有()作为标记,主要是用来提高SQL的效率
4.2基础函数例表:表 de
例表:表em
(1)查询部门表中的部门名称
SELECt NAME FROM de;
(2)查询部门表中的部门名称,并把其中的小写的数据转为大写
lower —> 数据转小写
SELECt LOWER(NAME) FROM de;
(3)查询部门表中的名称和地址,并把部门名称中小写的数据转为大写
upper —> 数据转大写
SELECt UPPER(NAME),loc FROM de;
(4)查询部门表中名称和名称的长度
length —> 数据的长度
一个字母或数字的长度为1,一个汉字的长度为3
SELECt NAME,LENGTH(NAME) FROM de;
(5)查询部门表中名称和名称从第三个数开始截取,截取两个数据
stbstr(数据的字段名,开始截取的位置,截取长度) —> 数据的截取
SELECt NAME,SUBSTR(NAME,3,2) FROM de;
(6)查询员工表的名字和将名字为’jack’的成员拼接一个’200’
concat(要拼接的字段,拼接的内容)
SELECt ename,CONCAT(ename,'200') FROM em WHERe ename='jack';
(7)查询员工表将名字为’jack’的成员替换为’Jenny’
replace(要替换的字段.要替换的字符,替换后的新数据
SELECT ename,REPLACE(ename,'jack','jenny') FROM em;
(8)查询判断员工表中的mgr字段是否为空,为空在为空的位置上添加数据’****’
SELECt ename,IFNULL(mgr,'****') mgr FROM em;
(9)查询员工表,将comm四舍五入取整
SELECt ename,ROUND(comm) FROM em;
查询员工表,四舍五入保留一位小数
SELECt ename,ROUND(comm,1) FROM em;
查询员工表,四舍五入,ceil向上取整,floor向下取整
SELECt ename,CEIL(comm),FLOOR(comm) FROM em;
(10)uuid
SELECt UUID();
(11)now() —> 年月日,时分秒
curdate() —>年月日
curtime() —>时分秒
SELECT NOW(),CURDATE(),CURTIME();
SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW());
SELECT HOUR(CURTIME()),MINUTE(CURTIME()),SECOND(CURTIME());5.条件查询 5.1distinct 去除重复行
SELECT DISTINCT loc FROM de;5.2 where 用来引导判断条件
- 使用where时,不能出现聚合函数和别名
- where比having高效
- where是分组前的过滤,having是分组后的过滤
5.2.1 查询部门编号=4的数据
select * from de where id=4;
5.2.2 查询部门编号大于4的数据
select * from de where id>4;
5.2.3 条件永远处理,查询所有的数据
SELECt * FROM de WHERe 1=1;
5.2.4 条件永远不成立
select * from de where 1=0;
5.2.5 查询部门编号大于4并且地区在二区的数据
select * from de where id>4 and loc="二区";
5.2.6 查询部门编号大于4或者地区在二区的数据
SELECt * FROM de WHERe id>4 or loc="二区";
5.2.7 查询部门编号为1,2,8的数据
select * from de where id in(8,2,1);5.3 模糊查询
5.3.1 模糊查询,查询job以’员’开头/结尾/中间含有的数据(员以后可以有多个数据)
select * from em where job like '%员'; select * from em where job like '员%'; SELECt * FROM em WHERe job LIKE '%员%';
5.3.2 模糊查询,查询job以’l’开头的数据(l以后有两个数据)
select * from em where ename like 'l__';5. 4.null
5.4.1过滤字段值为空的
select * from em where comm is null;
5.4.2 过滤字段值不为空的
select * from em where comm is not null;5.5 between and
#select * from em where sal>=5000 and sal<=10000; SELECt * FROM em WHERe sal BETWEEN 5000 AND 10000;#包含5000和100005.6 limit 分页,限制数据展示的条目
5.6.1 从第一个数开始,有三个数据
#从第一个数开始,有三个数据 select * from em limit 3;
5.6.2 从第二个数开始,有两个数据
#从第二个数开始,有两个数据 select * from em limit 1,2;#从第n+1个数开始,有m个数据
5.6.3 从第一个数开始,有三个数据
#从第一个数开始,有三个数据 select * from em limit 0,3;5.7 order by 排序
5.7.1 在em表中按照工资sal升序排序
#升序排序 select * from em order by sal; select * from em order by sal asc;
5.7.2 在em表中按照工资sal降序排序
#降序排序 select * from em order by comm desc;
5.7.3 在em表中按照员工名ename升序排序
#按照字母顺序排序 select * from em order by ename asc;
5.7.4 在em表中按照日期hiredate升序排序
#按照数字大小顺序排序 select * from em order by hiredate asc;
5.7.5 在em表中按照工作job升序排序
#字典排序:会查utf8里汉字对应的数字,按照数字的大小排序 #int a='副'; SELECt * FROM em ORDER BY job ASC;