sql看了一半发现课设用不上了
有点死心
不过还是得说json真好使。
大三估计得正式学数据库,删了有点可惜先丢这了。
SQL语法
DLL 数据定义语言
创建数据库
- create database
.创建数据库 - show database. 显示已有数据库
- create database if not exists
. 不存在这个名字的数据库就创建 - create database
character set uft8. 创建数据库的同时指定字符集 - show create database
. 显示指定数据库的创建指令
修改数据库
- alter database
character set gbk.更改对应数据库的字符集
删除数据库
- drop database
. 删除数据库
切换数据库
- use
. 切换数据库
创建数据表
- create
(row_1 char(8) not null unique,row_2 varchar,row_3 int,….,row_n char) 。row_i可以是对应列的名字。 - char是不可变字符组。char后补(num)指定这一列的最长长度,不够这个长度会补空格。
- varchar是可变字符组。varchar后补(num)指定这一列的最长长度,不够这个长度不会补空格。
- not null后缀用以确保该列信息必须填写。不持有这个后缀的信息列,不填充信息则会默认为null
- unique后缀用以确保该列中信息唯一,即该列中不能填写相同的信息。
查询数据表
- show tables 查询数据表列表奥
- desc
。查看特定表的结构
删除数据表
- drop table
。删除数据表
修改数据表
- alter table
rename to .修改表名 - alter table
character set utf8.修改表的字符集 - alter table
add 。对表添加一种新的字段 - alter table
change .。修改表内的一个字段名和类型 - alter table
modify .只修改字段类型
SQL数据类型
数值类型
- tinyint -128~127
- smallint -32768~32767
- mediumint 3byte
- int 4byte
- bigint 8byte
- float 单精度
- double 双精度
- decimal(n,m) 双精度。括号内指定数字位数和小数点后位数。即最多有m位,n个小数点后位数
字符类型
- char 0~255 定长
- varchar 0~65535 可变长度
- tinybolb 0~255 存储二进制字符串。也就是说可以通过二进制字符串转换来存图片之类的。/
- bolb 0~25535 存储二进制字符串
- mediumbolb 0~16677215 存储二进制字符串
- longblob 0~4294967295 存储二进制字符串
- tinytext 0~255 文本数据
- text 0~65535 文本数据
- mediumtext 文本数据
- longtext 文本数据
日期类型
- date 。只能存放年月日。没有时分秒。格式 2021-09-13
- time 。 11:11:23。只有时分秒
- year。2021.只有年份
- date time。 2021-09-13 11:12:13.存放年月日时分秒
- timestamp。20210913 111213.年月日时分秒。但中间没有分隔。时间戳
字段约束
非空约束。限制此列的值必须提供。
唯一约束。此列的值不能重复
主键约束。表中记录的唯一标识。可以是一个列,也可以是多个列的组合
创建表的时候定义主键。 create table
(classid varchar(15) primary key)或者create table (classid varchar(15) ,primary key(classid)) 删除数据表主键约束。alter table
drop primary key 主键自动增长。create table
(classid int primary key auto_increment )。自动增长只保证唯一性不保证连续性。 联合主键。create table
(classid varchar(15),stuid varchar(15),primary key(classid,stuid))
外键约束
DML 数据操作语言
添加数据
- insert into
() values() 。tbname后面的括号里用来指定赋值的字段,values里用来赋值。
删除数据
- 从数据表中删除满足需求的数据。delete from
where . - conditions里用来指定特定数据。通过对字段的判断来进行条件的选择。如classid=’10010‘或者stu_age>20
修改数据
- update
set =’…‘ where classid=’…’
DQL 数据查询语言
从数据表中提取满足要求的记录
- select
, , from [where conditions] 。sname指定要要查询指定数据的哪些字段。tbname指定表。如果要显示查询到的所有字段,就用*来替代字段名的列表。
where子句
删除修改查询语句后都可以加入where子句,用于筛选满足特定条件的数据进行删除修改查询。
条件。
- = 等于,精确匹配。
- != 不等于
- <> 小于或者大于,即不等于
- 大于小于,大于等于,小于等于和其他语言的语法一致
- betwe and。相当于是区间查询。select * from class class_time between 18 and 20
多条件查询。通过多个条件来筛选数据
- and 相当于是&&。where
and - or 相当于是||。where
or - not 用在between and前,表示区间反转。select * from class class_time not between 18 and 20
- and 相当于是&&。where
LIKE子句
模糊查询
- select * from
where like - 如:select * from stus where stu_name like ‘%o%’ 可以把名字中所有含有o的记录显示出来
- 在like关键字的表达式中,%表示任意多的字符,_表示任意一个字符
查询结果处理
计算列和别名。可以对数据表中查询的列,进行一定计算再显示出来。别名是在显示的时候对字段使用其他的名字
- 如:select
as ,2021- , from [where conditions] 那么第二行给出的数据会是2021-对应栏数值得到的数据。同时第一栏的数据的字段名将用sname4来显示
- 如:select
消除重复行。在查询结果中将数据重复的数据删除。select distinct
from
查询结果排序——BY排序
select
from where order by , ,…., [asc||desc] 代表根据sname2,sname3…,snamen的内容对查询到的信息进行排序显示,其中越在前的优先级越高。
默认是升序排列。后缀的asc代表升序,desc代表降序。
聚合函数
聚合函数是指SQL提供的对数据表中的某些列进行运算的函数
count() 统计函数。统计满足条件的指定字段数的记录数,如:
统计学生表中的学生人数
- select count(stu_num) from stus
统计学生表中的男生人数
- select count(stu_num) form stus where stu_gender=’男’
max()。找出查询信息中的最大值记录
min()。最小值
sum()。计算和
avg()。求平均值。
日期函数
对日期类型添加数据,可以采用字符串赋值,但字符串的形式必须是yyyy-MM-dd hh:mm:ss。用当前日期插入到数据列中,用函数now()或者sysdate()
获取当前系统时间可以用select now()或者select sysdate()
字符串函数
concat(sname1,sname2,….) 。把指定的字符串拼接起来。
- 如:select concat(stu_name,’-‘,stu_age) from stus
upper(sname) 。将对应的字符串都改成大写
lower(sname)。将指定字符串都改成小写。
substring(sname,n,m)。截取字符串,从对应的字符串的第n位往后截取m位来显示。如果n写start就指代从第一位开始
分组查询
分组就是对数据表中指定的列进行分组
- select by
- select … from
group by [having ] - 根据sname1对tbname进行分组。其中…表示要求选择显示的字段。如果…替换成*,则只会显示每个分组的第一个记录。
- having语句内表示条件,是对分组后的结果进行指定条件的筛查。
- select … from
分页查询
数据表中的记录比较多,一次性查询过多,则可以分页展示
- limit n,m 从第n条开始显示,共显示m条数据。limit语句放在语句末尾。也就是在where,order之类语句之后。
- 如:select stu_name form stus limit 0,3
关联关系
一对一
- 主键关联。不同表中主键相同即相关联。
- 唯一外键。任意一张表中添加一个外键字段来与另外一个表关联。
一对多
- 在多的一端设置外键,然后与一的部分进行关联。
多对多
额外创建一个关系表。用来维护多对多的关联。
关系表中的字段中有多个外键。分别用来指代不同的多。