做網(wǎng)站看網(wǎng)頁效果手機網(wǎng)站排名優(yōu)化
數(shù)據(jù)完整性:
- 實體完整性:每一行必須是唯一的實體
- 域完整性:檢查每一列是否有效
- 引用完整性:確保所有表中數(shù)據(jù)的一致性,不允許引用不存在的值
- 用戶定義的完整性:制定特定的業(yè)務(wù)規(guī)則
主鍵:
- 用于唯一標(biāo)識表中的行數(shù)據(jù)
- 有一個或多個字段組成
- 具有唯一性
- 不允許取空值(NULL)
- 一個表里只能有一個主鍵
數(shù)據(jù)類型:精準(zhǔn)數(shù)字,近似數(shù)字,字符串,二進制字符串,日期和時間等等
SQL結(jié)構(gòu)化查詢語句
DDL:數(shù)據(jù)定義語言:create(創(chuàng)建) , drop(刪除) , alter(修改)
DML:數(shù)據(jù)操作語言:insert(添加),update(更新), delete(刪除)
DCL:數(shù)據(jù)控制語言:select(選擇), show語句 , describe
DQL:數(shù)據(jù)查詢語言:grant(授權(quán)) , revoke(取消授權(quán)) , commit(提交), rollback(退回)
1:查看數(shù)據(jù)庫結(jié)構(gòu)
[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數(shù)據(jù)庫:保存著關(guān)于MySQL服務(wù)器所維護的所有其他數(shù)據(jù)庫的信息。如數(shù)據(jù)庫名,數(shù)據(jù)庫的表,表欄的數(shù)據(jù)類型與訪問權(quán) 限等
- performance_schema:用于監(jiān)控MySQL server在一個較低級別的運行過程中的資源消耗、資源等待等情況
mysql:是 MySQL 服務(wù)正常運行所需的數(shù)據(jù)庫,其中包含了用戶認(rèn)證相關(guān)的表
2.創(chuàng)建及刪除數(shù)據(jù)庫和表
(1)創(chuàng)建新庫
mysql> create database auth;
(2)創(chuàng)建新表
mysql> use auth;
mysql> CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));
備注:”DEFAULT“密碼默認(rèn)為空
(3)刪除一個數(shù)據(jù)表
mysql>DROP TABLE auth.users;
(4)刪除一個數(shù)據(jù)庫
mysql>DROP DATABASE auth;
3:管理表中的數(shù)據(jù)記錄
(1)插入數(shù)據(jù)記錄
mysql>use auth;
mysql>INSERT INTO users(user_name,user_passwd) VALUES('zhangsan', PASSWORD ('123456'));
mysql>INSERT INTO users VALUES('lisi', PASSWORD('654321'));
(2)查詢數(shù)據(jù)記錄
mysql>select * from auth.users;
mysql>SELECT user_name,user_passwd FROM auth.users WHERE user_name='zhangsan';
(3)修改數(shù)據(jù)記錄
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)刪除數(shù)據(jù)記錄
mysql>DELETE FROM auth.users WHERE user_name='lisi';
mysql>SELECT * FROM auth.users;
4:數(shù)據(jù)庫表高級操作
(1)克隆表
mysql>create table user01?like auth.users;?????//通過 LIKE 方法,復(fù)制 users?表生成 tmp 表,注意,此表為空
mysql>insert into?user01?select * from auth.users; ????//通過 player 表生成 tmp 表內(nèi)數(shù)據(jù)記錄
(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
標(biāo)識列
truncate和delete的區(qū)別:
truncate刪除表中的內(nèi)容,不刪除表結(jié)構(gòu),釋放空間;
delete刪除表中的內(nèi)容,不刪除表結(jié)構(gòu),但不釋放空間
truncate刪除數(shù)據(jù)后重新寫數(shù)據(jù)會從1開始,
delete刪除數(shù)據(jù)后只會從刪除前的最后一行續(xù)寫;內(nèi)存空間上,truncate省空間
delete屬于DML語句,而truncate和drop都屬于DDL語句
delete可以在后續(xù)加上where進行針對行的刪除
truncate和drop后面只能加上表名,直接刪除表,無法where
drop table 表名??刪除表,內(nèi)容連帶結(jié)構(gòu)一起刪除;
(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; //創(chuàng)建臨時表
mysql> insert into mytmp(name,level) values('aa',10); //插入數(shù)據(jù)
Query OK, 1 row affected (0.01 sec)
mysql>select * from mytmp;
mysql>quit //退出當(dāng)前連接
Bye
mysql>select * from mytmp;?????//重新連接 MySQL 之后查看臨時表狀態(tài)
flush privileges;更新權(quán)限的相關(guān)信息
授權(quán)(一組權(quán)限的集合:角色)
授權(quán)授的是什么,是權(quán)限嗎
1:授予權(quán)限
mysql>grant select on auth.* to 'zhangsan' @'localhost' identified by '123456'; 本機登錄
mysql>grant select on auth.* to 'zhangsan' @'192.168.10.%' identified by '123456'; 特定網(wǎng)段
mysql>grant select on auth.* to 'zhangsan' @'192.168.10.101' identified by '123456'; 指定ip
2:查看權(quán)限
mysql> SHOW GRANTS FOR 'zhangsan'@'localhost';
3:驗證權(quán)限
[root@localhost ~]# mysql -u zhangsan -p123456