MySQL數(shù)據(jù)庫:是數(shù)據(jù)庫管理軟件
MySQL(Structured Query Language):結(jié)構(gòu)化查詢語言
MySQL語言分類
- DDL(數(shù)據(jù)定義語言):定義數(shù)據(jù)庫、數(shù)據(jù)表結(jié)構(gòu),如:
create(創(chuàng)建),drop(刪除),alter(修改) - DML(數(shù)據(jù)操作語言):主要用于操作數(shù)據(jù),如:
insert(插入),update(修改),delete(刪除) - DCL(數(shù)據(jù)控制語言):定義訪問語言,取消訪問權(quán)限,安全設(shè)置
- DQL(數(shù)據(jù)查詢語言):如:
select(查詢),from子句,where子句
MySQL數(shù)據(jù)庫的安裝和配置
MySQL下載地址: https://www.mysql.com/downloads/
登陸數(shù)據(jù)庫
mysql -u賬號 -p密碼
或者
mysql -u賬號 -p
Enter password:密碼
MySQL 創(chuàng)建數(shù)據(jù)庫:
方式一 直接創(chuàng)建數(shù)據(jù)庫:
create database 數(shù)據(jù)庫名;
mysql> create database 方式一的數(shù)據(jù)庫;
Query OK, 1 row affected (0.07 sec)
mysql> show databases;
+-----------------------+
| Database |
+-----------------------+
| cloud_note |
| day06 |
| day07 |
| db1 |
| db2 |
| information_schema |
| jiapu |
| kengchacha |
| mysql |
| netctoss |
| o2o |
| performance_schema |
| stu |
| student |
| sys |
| test |
| ttms |
| user |
| 方式一的數(shù)據(jù)庫 |
+-----------------------+
19 rows in set (0.01 sec)
方式二 創(chuàng)建數(shù)據(jù)庫同時設(shè)置字符集:
create database 數(shù)據(jù)庫名 character set 字符集;
方式三 創(chuàng)建數(shù)據(jù)庫同時,設(shè)置字符集編碼和校對規(guī)則:
create database 數(shù)據(jù)庫名 character set 字符集 collate 校對規(guī)則;
create database 數(shù)據(jù)庫名 character set 字符集 collate 校對規(guī)則
演示:創(chuàng)建一個數(shù)據(jù)庫,命名為“測試”,并設(shè)置字符編碼為utf8;
mysql> create database 測試 character set utf8;
Query OK, 1 row affected, 1 warning (0.11 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| day06 |
| db1 |
| db2 |
| information_schema |
| mysql |
| performance_schema |
| student |
| sys |
| user |
| 測試 |
+--------------------+
10 rows in set (0.11 sec)
數(shù)據(jù)庫刪除
drop database 數(shù)據(jù)庫名
演示:刪除名為“測試”的數(shù)據(jù)庫;
mysql> drop database 測試;
Query OK, 0 rows affected (0.23 sec)
修改:
alter database 數(shù)據(jù)庫 character set 字符集(如:utf8)
查看數(shù)據(jù)庫:
查看所有數(shù)據(jù)庫show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| cloud_note |
| day06 |
| day07 |
| db1 |
| db2 |
| information_schema |
| jiapu |
| kengchacha |
| mysql |
| netctoss |
| o2o |
| performance_schema |
| stu |
| student |
| sys |
| test |
| ttms |
| user |
+--------------------+
18 rows in set (0.02 sec)
show create database 數(shù)據(jù)庫名;
select database();
切換數(shù)據(jù)庫 use 數(shù)據(jù)庫名
use student //如,我現(xiàn)在需要將數(shù)據(jù)庫切換到student數(shù)據(jù)庫中
表結(jié)構(gòu)操作:
創(chuàng)建:
create table 表名(
字段1 字段類型 字段約束,
字段2 字段類型 字段約束
);
字段類型:特別注意為cahr(固定長度) / varchar(可變長度)
字段約束:
- primary key 主鍵約束
- unique 唯一約束
- not null 非空約束
自增長:auto_increment
刪除表:
drop table 表名;
修改表:
alter table 表名 (add,modify,change,drop) ;
rename table 舊表名 to 新表名;
alter table 表名 character set 字符集
查詢表結(jié)構(gòu):
show tables; 查詢出所以的表
show create table 表名 //表達創(chuàng)建語句,表的定義
desc 表名 //表結(jié)構(gòu)
MySQL查看數(shù)據(jù)表
查看表
- 查看所有的表
show tables;
mysql> show tables;
+-----------------+
| Tables_in_day06 |
+-----------------+
| stu |
+-----------------+
1 row in set (0.00 sec)
- 查看表的創(chuàng)建過程
show create table stu
mysql> show create table stu;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| stu | CREATE TABLE `stu` (
`sid` int(11) NOT NULL,
`sname` varchar(31) DEFAULT NULL,
`sex` int(11) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
- 查看表結(jié)構(gòu)
desc stu
mysql> desc stu;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| sid | int(11) | NO | PRI | NULL | |
| sname | varchar(31) | YES | | NULL | |
| sex | int(11) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
修改表
mysql> SHOW TABLES FROM mysql;
查看數(shù)據(jù)表結(jié)構(gòu)
SHOW COLUMNS FROM table_name;
eg:
`mysql> show columns from tb1;`
+----------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+-------+
| username | varchar(20) | YES | | NULL | |
| age | tinyint(3) unsigned | YES | | NULL | |
| salary | float(8,2) unsigned | YES | | NULL | |
+----------+---------------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
MySql 記錄的插入與查找
INSERT
- 插入記錄
INSERT[INTO] tbl_name[(col_name,...)] VALUES(val,...)
1、為表中所以字段插入記錄:
mysql> INSERT tb1 VALUES('XIAOLI',21,8000);
Query OK, 1 row affected (0.02 sec)
2、為表中特定字段插入記錄:
mysql> INSERT tb1(username,age) VALUES('Tom',20);
Query OK, 1 row affected (0.00 sec)
SELECT
- 記錄查找
SELECT expr,... FROM tbl_name
1、查看表中所有記錄:
mysql> SELECT * FROM tb1;
+----------+------+---------+
| username | age | salary |
+----------+------+---------+
| XIAOLI | 21 | 8000.00 |
| Tom | 20 | NULL |
+----------+------+---------+
2 rows in set (0.01 sec)
空值與非空
-
NULL,字段可以為空 -
NOT NULL,字段值禁止為空
演示:創(chuàng)建數(shù)據(jù)表,設(shè)置字段name為NOT NULL。
mysql> CREATE TABLE tb2(
-> username VARCHAR(20) NOT NULL,
-> age TINYINT UNSIGNED NULL
-> );
Query OK, 0 rows affected (0.10 sec)
mysql> show columns from tb2;
+----------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+-------+
| username | varchar(20) | NO | | NULL | |
| age | tinyint(3) unsigned | YES | | NULL | |
+----------+---------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
實驗1:
插入記錄username為XIAOWANG,age為NULL
mysql> INSERT tb2 VALUES('XIAOWANG',NULL);
Query OK, 1 row affected (0.03 sec)
實驗2:
插入記錄username為NULL,age為25
mysql> INSERT tb2 VALUES(NULL,25);
ERROR 1048 (23000): Column 'username' cannot be null
錯誤提示:字段usermane不能為null
AUTO_INCREMENT
- 自動編號,且必須與主鍵組合使用
- 默認情況下,起始值為1,沒次的增量為1
演示:創(chuàng)建一個數(shù)據(jù)表
1、錯誤示范
mysql> CREATE TABLE tb3(
-> id SMALLINT UNSIGNED AUTO_INCREMENT,
-> username VARCHAR(30) NOT NULL
-> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
錯誤提示:必須定義為主鍵
2、正確示范
多表操作
- 多表操作之間的關(guān)系如何來維護:
wawa