数据完整性:
- 实体完整性:每一行必须是唯一的实体
- 域完整性:检查每一列是否有效
- 引用完整性:确保所有表中数据的一致性,不允许引用不存在的值
- 用户定义的完整性:制定特定的业务规则
主键:
- 用于唯一标识表中的行数据
- 有一个或多个字段组成
- 具有唯一性
- 不允许取空值(NULL)
- 一个表里只能有一个主键
数据类型:精准数字,近似数字,字符串,二进制字符串,日期和时间等等
SQL结构化查询语句
DDL:数据定义语言:create(创建) , drop(删除) , alter(修改)
DML:数据操作语言:insert(添加),update(更新), delete(删除)
DCL:数据控制语言:select(选择), show语句 , describe
DQL:数据查询语言:grant(授权) , revoke(取消授权) , commit(提交), rollback(退回)
1:查看数据库结构
[root@localhost ~]# mysql -u root -ppwd123
mysql> show databases;
mysql> use mysql
mysql> show tables;
mysql> describe user;
mysql> select * from user\G;
备注:
- information_schema数据库:保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等
- performance_schema:用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况
mysql:是 MySQL 服务正常运行所需的数据库,其中包含了用户认证相关的表
2.创建及删除数据库和表
(1)创建新库
mysql> create database auth;
(2)创建新表
mysql> use auth;
mysql> CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));
备注:”DEFAULT“密码默认为空
(3)删除一个数据表
mysql>DROP TABLE auth.users;
(4)删除一个数据库
mysql>DROP DATABASE auth;
3:管理表中的数据记录
(1)插入数据记录
mysql>use auth;
mysql>INSERT INTO users(user_name,user_passwd) VALUES('zhangsan', PASSWORD ('123456'));
mysql>INSERT INTO users VALUES('lisi', PASSWORD('654321'));
(2)查询数据记录
mysql>select * from auth.users;
mysql>SELECT user_name,user_passwd FROM auth.users WHERE user_name='zhangsan';
(3)修改数据记录
mysql>UPDATE auth.users SET user_passwd=PASSWORD('') WHERE user_name= 'lisi';
mysql>SELECT * FROM auth.users;
mysql>UPDATE mysql.user SET authentication_string=PASSWORD('123457') WHERE user='root';
mysql>FLUSH PRIVILEGES; /
[root@www ~]# mysqladmin -u root -p'123457' password '123456'
(4)删除数据记录
mysql>DELETE FROM auth.users WHERE user_name='lisi';
mysql>SELECT * FROM auth.users;
4:数据库表高级操作
(1)克隆表
mysql>create table user01 like auth.users; //通过 LIKE 方法,复制 users 表生成 tmp 表,注意,此表为空
mysql>insert into user01 select * from auth.users; //通过 player 表生成 tmp 表内数据记录
(2)删除表
mysql> delete from user01 where user_name='zhangsan';
mysql>delete from user01;
mysql>insert into user01 select * from auth.users;
mysql>truncate table user01;
mysql>select count(*) from user01;
备注:
编号 姓名 性别
1
2
3
4
5
标识列
truncate和delete的区别:
truncate删除表中的内容,不删除表结构,释放空间;
delete删除表中的内容,不删除表结构,但不释放空间
truncate删除数据后重新写数据会从1开始,
delete删除数据后只会从删除前的最后一行续写;内存空间上,truncate省空间
delete属于DML语句,而truncate和drop都属于DDL语句
delete可以在后续加上where进行针对行的删除
truncate和drop后面只能加上表名,直接删除表,无法where
drop table 表名 删除表,内容连带结构一起删除;
(2)临时表
mysql>select * from mytmp; //查看 mytmp 表是否存在
mysql>CREATE TEMPORARY TABLE `mytmp` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`NAME` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`level` int(10) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; //创建临时表
mysql> insert into mytmp(name,level) values('aa',10); //插入数据
Query OK, 1 row affected (0.01 sec)
mysql>select * from mytmp;
mysql>quit //退出当前连接
Bye
mysql>select * from mytmp; //重新连接 MySQL 之后查看临时表状态
flush privileges;更新权限的相关信息
授权(一组权限的集合:角色)
授权授的是什么,是权限吗
1:授予权限
mysql>grant select on auth.* to 'zhangsan' @'localhost' identified by '123456'; 本机登录
mysql>grant select on auth.* to 'zhangsan' @'192.168.10.%' identified by '123456'; 特定网段
mysql>grant select on auth.* to 'zhangsan' @'192.168.10.101' identified by '123456'; 指定ip
2:查看权限
mysql> SHOW GRANTS FOR 'zhangsan'@'localhost';
3:验证权限
[root@localhost ~]# mysql -u zhangsan -p123456