文章目录
- 一、 字段修饰符
- 1.1主键
- 1.2自动增长
- 1.3非空
- 1.4默认值
- 1.5外键
- 二、 对数据的操作
- 2.1增加数据
- 2.2删除数据
- 2.3更新数据
- 2.4查询数据
- 2.4.1查询所有的数据
- 2.4.2查询指定字段
- 2.4.3去除重复字段
- 2.4.4where表达式详解
- 2.4.5分组查询
- 2.4.6排序
- 三、 SQL语言
- 3.1DML
- 3.2DDL
- 3.3DCL
一、 字段修饰符
1.1主键
主键使用primary key修饰 ,它是唯一,可以防止用户插入相同的数据
如果字段加上主键修饰符,如果再加入重复的数据会报错。
1.2自动增长
auto_increment 是自动增长的修饰符,用户没插入一条数据,修饰的字段会自动增加
这样创建的表插入数据默认是从1开始的
1.3非空
not null 如果字段用not null 修饰了,但是插入数据的时候这个字段没有给值会报错
create table student (sid int primary key auto_increment,sname varchar(20) not null,sex char(2));
1.4默认值
default 数字
或者default 字符串
意思是用户如果某个字段设置了默认值,如果插入数据的时候这个字段没有给值就采用默认值
create table student (sid int primary key auto_increment,sname varchar(20) not null,sex char(2) default ‘男’);
1.5外键
其中一个表中的字段用primary key修饰,它叫主键,主键所在的表叫主表,另外一张表也有一个字段和主表中的主键相关联,tid叫做student表的外键。
用外键约束,如果删除一个表中的数据,会提示报错,这样就保证了数据的一致性和完整性。
完整代码如下:
创建教师表:
create table teacher (tid int primary key auto_increment,tname varchar(20));
创建学生外键表:
create table student(sid int primary key auto_increment,sname varchar(20),age int,tid int,foreign key(tid) references teacher(tid));
二、 对数据的操作
2.1增加数据
insert into 表名 (字段1,字段2…) values (值1,值2…) ;
或者同时插入多条数据
2.2删除数据
delete from 表名 where 条件表达式
delete from yuan where name =‘jerry’;
2.3更新数据
update 表名 set 字段=新值,字段2=新值… where 条件
必须加条件 否则整个表的数据都会更新
update yuan set name=‘aaa’,sal=6000 where id=3;
2.4查询数据
2.4.1查询所有的数据
select * from 表名
select * from yuan;
2.4.2查询指定字段
select 字段1,字段2… from 表名
select id,name,sal from yuan;
2.4.3去除重复字段
select distinct 字段名 from 表名;
select distinct name from yuan;
2.4.4where表达式详解
算术表达式:+ - * / %
比较运算符: > >= < <= <>表示不等 =表示等于
逻辑运算符: and or not
(1) 查询工资大于3000
select * from 表名 where sal>3000;
select * from yuan where sal>3000;
(2) 查询工资不等于6000
select * from yuan where sal<>6000;
(3) 查询工资等于6000
select * from yuan where sal=6000
(4) 查询姓名是jim而且性别是女的信息
select * from yuan where name=’jim’ and sex=’女’;
(5) 查询不是女生的信息
select * from yuan where not sex=’女’;
(6) 查询工作在3000和5000之间的
between 表示范围 相当于>=3000 and <=5000
select * from yuan where sal between 3000 and 6000;
(7) 查询地区是保定 南京 沧州
in(值1,值2,值3) 表示是里面的任意一个值
(8) like 模糊查询
like后面可以跟字符串表示模糊查询,%代表任意字符,一个_代表一个字符
比如查询姓名叫张x 张xx
select * from yuan where name like ‘张%’;
比如查询叫x华 xx华 最后一个字是华
select * from yuan where name like ‘%华’;
比如查询中间带华的
select * from yuan where name like ‘%华%’;
2.4.5分组查询
count(*) 统计数量
max(字段名)最大值
min(字段名)最小值
sum(字段名)求和
avg(字段名)求平均值
数据表信息如下:
求男生和女生的人数
select sex,count(*) from yuan group by sex;
求部门工资的最大值
select b_id,max(sal) from yuan group by b_id;
求每个地区的平均工资是多少
select area,avg(sal) from yuan group by area;
分组以后再加条件用having
查询按地区分组然后平均工资小于等于6000的信息
select area,avg(sal) from yuan group by area having avg(sal)<=6000;
2.4.6排序
(1)升序和降序
按工资排序 取前三名
desc是降序 asc是升序
select * from yuan order by sal desc;
select * from yuan order by sal desc limit 3;
(2)limit详解
limit后面可以跟两个参数,第一个参数是开始的索引号,默认是0开始,第二个参数取的个数(长度)
select * from yuan order by sal desc limit 0,3;
三、 SQL语言
SQL(structured query language)是结构化查询语言的意思,mysql、oracle用的都是sql语言,只不过根据软件的不同儿语法稍有区别,就和我们的普通话和方言的意思是一样的。
上面的增删改查 对数据库和表的操作等都是sql语句。
SQL语言
3.1DML
DML(data manipulation language)数据操纵语言:就是我们最经常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操作。
SELECT 列名称 FROM 表名称
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
DELETE FROM 表名称 WHERE 列名称 = 值
3.2DDL
DDL(data definition language)数据库定义语言:其实就是我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)ALTER TABLE table_name
ALTER COLUMN column_name datatypeDROP TABLE 表名称
DROP DATABASE 数据库名称
3.3DCL
DCL(Data Control Language)数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。这个比较少用到。
在公司呢一般情况下我们用到的是DDL、DML这两种。