引言: 数据库中的数据存放在数据库表中,以二维表格的形式存在。 一行代表一条数据记录,称为记录。 一列代表同一域的数据,表示同一属性,称为字段 在这里说一下在数据库为啥要声明数据类型: 数据完整性指代数据的准确性和可靠性 保证记录是唯一的,不重复的 主键字段唯一且不能为空 唯一约束字段值不能重复 多张表的引用 表中外键字段的取值需要依赖于另张表的主键的取值 表达式为真结果为1,否则为0 表达式为真结果为1,否则为0 先将数据转化为2进制 对表数据的操作,会更改数据,不改变结构 MySQL把用户的数据存放在 “mysql” 数据库的 “user” 表中。 命令提示符在管理员模式下停止 MySQL 服务: net stop mysql 管理员模式下使用无验证方式启动MySQL服务: mysqld –skip-grant-tables 开启新的命令行窗口进入MySQL: mysql 进入 ‘mysql’ 数据库: USE mysql; 使用修改用户密码语句对root密码进行重置。 启动”运行”窗口,运行命令结束”mysqld”进程: taskkill /im mysqld.exe /f 命令提示符在管理员模式下启动 MySQL 服务: net start mysql 可以用新密码登陆 root 用户。 比较常用的是DQL、DML、DDL,需熟练掌握,DCL不常用,知道即可。
之前的博客对mysql的一些入门知识进行了讲解,该博客将对sql的四个分类进行讲解。之前博客地址:https://blog.csdn.net/weixin_45696161/article/details/1063101081.DDL
1.1 ddl操作
1.1.1 数据库操作
create database [if not exists] dbname
drop database [if exists] dbname
1.1.2 数据类型和表操作
1) 数值类型 TINYINT 1 Byte =8 bit -128-127 SMALLINT 2 Byte =16 bit -2^15-2^15-1 MEDIUMINT 3 INT 4字节 -21亿 - 21亿 BIGINT 8 float(n,m) 4 n代表总长度,m代表小数点后位数 double(n,m) 8 decimal(n,m) 与金钱相关的数据,不会产生精度丢失 2) 日期类型 date:日期 time:时间 datetime:日期时间 范围:0000-9999 timestamp:时间戳. 范围:1970-2038 year:年 3) 字符串类型 char(n):定长字符串,n代表长度,存入不足n,会用空格补全 varchar(n):可变长字符串,不足n,就是字符串长度 4) 其他类型 binary:定长二进制 varbinary:可变长二进制 blob:二进制 text:大对象,字符,文本 enum:枚举 set:集合
create table `user`( userid int, username varchar(20), `password` varchar(20), birthday date )
A.添加字段 alter table tname add [column] col_name col_definition [after|first] 添加列(默认最后一列) alter table tname add colname colType 添加到指定列后 alter table tname add colname2 colType after colname1 添加到首列 alter table tname add colname colType first; B. 修改字段 alter table tname change/modisc fy col_name new_col_name col_definition; 修改字段名称 alter table tname change colname1 colname2 colType 修改数据类型 alter table tname change colname colname colType alter table tname modify colname colType 修改字段位置 alter table tname modify colname colType after colname2; C. 删除字段 alter table tname drop colname; D. 重命名 rename table tname to newname; E. 清空表 truncate table tname; F.重命名 alter table tname rename to newName;
drop table tname;
1.2 数据完整性
1.2.1 实体完整性
创建表时声明主键 create table user( userid int primary key, username varchar(20) ); #或者下面方法 create table user( userid int, username varchar(20), primary key(userid,username) ); 修改表结构添加约束(创建表的时候就应该添加上) alter table user add CONSTRAINT PK_USERID primary key(userid,username); 1.每张表必须有且只有一个主键 2.允许有联合主键(多个字段整体作为主体) 3.尽量选择非业务字段(选择无意义的字段) 销毁: alter table user drop primary key;
创建表时声明唯一约束 create table user( userid int primary key, username varchar(20), card varchar(18) unique ); create table user( userid int primary key, username varchar(20), card varchar(18), unique(card) ); 修改表结构添加唯一约束 alter table user add CONSTRAINT UN_CAED unique(card); 销毁: drop index UN_CARD on user;
create table user( userid int primary key auto_increment, # 从1开始每次增加1 username varchar(20), card varchar(18) );
1.2.2 域完整性
保证列的数据正确性
1.2.3 引用完整性
添加外键约束会降低表的性能alter table emp add CONSTRAINT PK_DEPTNO foreign key(deptno) REFERENCES dept(deptno); emp中的deptno参照dept里面的deptno alter table emp drop foreign key;
1.3运算符
1.3.1 算术运算符
select 1+2; select 1-2; select 3*4; select 3/4; #0.75 select 3/0; #null select 3 div 4; #整除
1.3.2 比较运算符
select 1>1; select 1<1; select 1<>1; select 1!=1; is true,is not true, is null,is not null, between and,not between and, in, not in
1.3.3 逻辑运算符
select 1=1 and 1=2; # 两边都是1 select 1=1 or 1=2; # 两边都是0 select !(1<>1); # 1-->0 0-->1
1.3.4 位运算符
select 1&0; #按位与 select 1 | 1; #按位或 select 1^2; #按位异或
2.DML
2.1 插入
insert into tname values(col1,col2...) value值的个数和顺序必须和表中字段的个数和顺序保持一致
前提是不添加值得字段允许为空。 insert into tname(col1,col2...) values(val1,val2...) value值得顺序必须和前面字段名称的顺序一致
insert into tname[(col1,col2...)] values(val1,val2...),(val1,val2...)...
insert into tname([col1,col2...]) select col1,col2...from tname2
2.2 修改
update tname set col1=val1,col2=val2... [where...] 如果update没有使用where则代表对整张表所有记录修改
2.3 删除
delete from tname [where...] 不使用where将删除整张表中所有的记录 delete,truncate和drop的区别? delete只删除数据,不修改表结构,不重置自增,逐行删除 truncate清空表数据,不修改表结构,重置自增,删除速度比delete高 drop清空表结构,表结构文件和数据文件全部删除
3.DCL
3.1 管理用户
3.1.1 查询用户
SELECT * FROM user;
3.1.2 查询用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; /* 主机名为 localhost 时仅限本地登陆,填写 % 时任何机器都可以登陆 */
3.1.3 删除用户
DROP USER '用户名'@'主机名';
3.1.4 修改用户密码
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名'; -- 普通方式 SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码'); -- 特有的简化方式
3.1.5 重置root用户密码
3.2 权限管理
3.2.1 查询用户权限
SHOW GRANTS FOR '用户名'@'主机名';
3.2.2 授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; GRANT ALL ON *.* TO '用户名'@'主机名'; -- 使用通配符给用户授予全部权限
3.2.2 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机号';
4.DQL
4.1 dql语法
select cols #查询并展示的数据(字段,表达式等) from tables #查询的数据来源(表,结果集,视图等) where condition #条件语句 group by #分组 having #分组之后的条件判断 order by #排序(asc升序 desc降序) limit #限制结果查询
4.2 基本查询语句(emp表为例)
select * from emp
# 查询emp表中empno和ename的值 select empno,ename from emp
# 查询emp表中薪水>2000的员工信息 select * from emp where sal > 2000
# 查询薪水>2000的20号部门的员工信息 select * from emp where sal > 2000 and deptno = 20 # 查询薪水>2000或者20号部门的员工信息 select * from emp where sal > 2000 or deptno = 20
# 查询薪水在1000到2000之间的员工信息 select * from emp where sal >= 1000 and sal <= 2000 select * from emp where sal between 1000 and 2000
# 查询员工编号为7369,7521,7788的员工信息 select * from emp where empno=7369 or empno=7521 or empno=7788 select * from emp where empno in(7369,7521,7788)
select empno [as] 编号,ename [as] 名称 from emp select e.ename,e.deptno from emp e
# 在emp表中查询所有的职位信息 select distinct job from emp
# 查询员工奖金为空的员工信息 select * from emp where comm is [not] null
# 按照薪水升序排序 select * from emp order by sal [asc] # 按照薪水升序排序,如果薪水一样则按照编号降序排序 select * from emp order by sal [asc],empno desc
% 代表匹配0到多个字符 _ 代表匹配1位字符 #查询以a打头的员工信息 select * from emp where ename like 'a%'; #查询以n结尾的员工信息 select * from user where ename like '%n'; #查询包含l的员工信息 select * from user where ename like '%l%'; #查询第二个字为l的员工信息 select * from user where ename like '_l%'
limit offset,length: offset指代起始位置,从0开始 length指代获取的长度 # 查询前五条记录 select * from emp limit 0,5; select * from emp limit 5; 常用于分页查询
5. 总结
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算