DDL 資料庫定義語言(庫的操作)(看懂,工作時使用較少)1.創建一個庫 create database 庫名稱 [character set 碼表名稱 collate 字元校對集名稱] create database day15; 1>看到Query OK, 1 row affected (0.0 ...
DDL 資料庫定義語言(庫的操作)(看懂,工作時使用較少)
1.創建一個庫
create database 庫名稱 [character set 碼表名稱 collate 字元校對集名稱]
create database day15;
1>看到Query OK, 1 row affected (0.00 sec) 表示執行成功.
2>sql語句語法: 結尾應使用";"號.
3>字元校對集: 決定數據排序的。
2.顯示mysql中都有哪些庫了.
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| day13 |
| mysql |
| performance_schema |
| test |
+--------------------+
可以看到除了自己創建的庫之外,還有一些其他庫。其他庫(除了test)不要亂動。因為是保存mysql的配置信息,賬戶信息等等。
test庫 : 自動創建用於測試的。
3.刪除一個數據
drop database 資料庫名稱;
drop database day15;
4.修改資料庫碼表和字元校對(不常用)
alter database 資料庫名稱 character set 資料庫碼表 [collate 校對集名稱];
alter database day15 character set utf8 collate utf8_bin;
5.當前要使用的庫(重要)
use 庫名
use day15;
出現Database changed,說明切換完成.
6.查看當前選擇的資料庫
select database();
+------------+
| database() |
+------------+
| day15 |
+------------+
7.顯示創建庫的語句.
show create database 資料庫名稱;
show create database day15;
| day15 | CREATE DATABASE `day15` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE
utf8_bin */ |
//-------------------------------------------------------------------------------------------------------------------------------------------------------
資料庫中的數據類型 (瞭解,知道在什麼情況下應該使用什麼類型的數據)
一。數字型
整型
TINYINT 1位元組 byte
SMALLINT 2位元組 short
MEDIUMINT 3位元組
(常用)INT 4位元組 int
BIGINT 8位元組 long
浮點型
FLOAT 單精度4位元組 float
**DOUBLE 8位元組 double
*DECIMAL 沒有精度損失
============================================
DOUBLE 和 DECIMAL 區別?
DOUBLE類型在運算時會有精度的缺失。
DECIMAL 就是解決精度缺失問題的。(底層使用字元串來保存數字)
單純想表示小數屬性時,使用double。
需要頻繁參與運算的小數,使用decimal。
============================================
二。字元串類型
註意: 字元串類型要使用單引號包裹.
短字元串類型
CHAR/VARCHAR (最大長度255位元組)
====================================================
問題:char和varchar有什麼區別?
char定長字元串.varchar表示變長字元串.
同時指定長度為10。當存儲 abc
char => 'abc '
varchar => 'abc'
結論: 開發中varchar用的最多。 char只在表示固定長度的枚舉中使用。例如 :性別(用01,02表示)
====================================================
長字元串類型(流類型)
*TEXT/CLOB 保存文本(字元流) --> 當要保存的內容超過255位元組時使用. java中的writer 字元
BLOB 保存位元組(位元組流) --> 開發中用不到 java中的stream 位元組
Character Large Object
binary Large Object
區別:
text:只能存儲字元數據.
BLOB:可以存儲字元和多媒體信息(圖片 聲音 圖像)
三、日期和時間類型
date 只記錄日期 2015-01-14
time 只記錄時間 11:36:25
year 只記錄年 2015
datatime 又記錄日期 又記錄 時間 2015-01-14 11:36:25
**timestamp 同上 2015-01-14 11:36:25
問題: datatime 和 timestamp 區別?
這兩種類型記錄的數據是一模一樣.
區別在於插入的時候,如果插入datatime類型時,沒有 傳值,那麼該類型預設值就是null;
如果插入timestamp類型時,沒有 傳值,那麼該類型預設值就是當前時間;
//--------------------------------------------------------------------------;----------------------------------------
與創建表相關的語句(DDL) (記住,能夠手寫)
CREATE TABLE table_name
(
field1 datatype 約束/主鍵約束 auto_increment,
field2 datatype 約束,
field3 datatype 約束
)character set 字元集 collate 校對規則
1.創建表
create table t_user(
name varchar(10),
password varchar(20),
age int(3), -- 數字類型在聲明時,可以忽略長度.
birthday datetime,
hiredate timestamp
);
varchar最好指定長度
整型一般不指定.
2.查看當前庫中有哪些表
show tables;
3.查看表的結構
desc 表名;
desc t_user;
4.刪除表
drop table 表名;
drop table t_user;
5.添加一列
alter table 表名 add 列名 類型;
alter table t_user add photo blob;
6.修改列的類型
alter table 表名 modify 列名 類型;
alter table t_user modify photo varchar(20);
7.修改列的名稱
alter table 表名 change 舊列名 新列名 數據類型;
將 photo這一列 改名為 image
alter table t_user change photo image varchar(20);
8.刪除某列
alter table 表名 drop 列名;
alter table t_user drop image;
9.修改表的名稱
rename table 舊表名 to 新名;
rename table t_user to user;
10(用的極少)修改表的字元集. (如果創建表時不指定,預設使用資料庫的字元集)
alter table 表名 character set 字元集 collate 校對集;
alter table t_user character set utf8 collate utf8_bin;
//-------------------------------------------------------------------------------------------------
列的約束 (掌握)
保證數據的完整性的.
1.非空約束(not null) 指定非空約束的列, 在插入記錄時 必須包含值.
2.唯一約束(unique) 該列的內容在表中. 值是唯一的.
3.主鍵約束(primary key) 當想要把某一列的值,作為該列的唯一標示符時,可以指定主鍵約束(包含 非空約束和唯一約束). 一個表中只能指定一個主鍵約束列.
主鍵約束 , 可以理解為 非空+唯一.
註意: 並且一張表中只能有一個主鍵約束.
約束體現資料庫的完整性.
例如:創建帶有約束的表
create table t_user2(
id int primary key auto_increament, -- 員工編號
name varchar(10) not null, -- 員工姓名
loginname varchar(10) not null unique, -- 登陸名稱
password varchar(20) not null, -- 密碼
age int(3) not null, -- 年齡
birthday datetime not null, -- 生日
hiredate timestamp not null -- 入職日期
);
//----------------------------------------------------------------------------------------------------------------------------
主鍵自動增長 (掌握)
註意:
1.前提某個表的主鍵是數字. 我們可以將該主鍵設置為自增.
2.使用主鍵自增可能會造成主鍵的斷層。
3.mysql,sqlserver這兩個資料庫具有該功能.
4.主鍵自增只能給主鍵約束的列加。
自增就是 每次插入記錄時不需要指定值. 該欄位自己維護自己的值.
維護方式就是每次加1;
語法:
create table t_user(
id int primary key auto_increment,
password varchar(30) not null,
age int not null,
birthday datetime not null,
hiredate timestamp not null,
number int unique
);
//--------------------------------創建修改表練習---------------------------------------------------
CREATE TABLE employee (
id INT(10),
NAME VARCHAR(10),
gender VARCHAR(10),
birthday DATETIME,
entry_date TIMESTAMP,
job VARCHAR(5),
salary DOUBLE(5,3),
RESUME TEXT
);
1在上面員工表的基礎上增加一個image列。
alter table employee add image blob;
2修改job列,使其長度為60。
alter table employee modify job varchar(60)'
3刪除gender列。
alter table employee drop gender;
4表名改為user。
rename table employee to user;
5修改表的字元集為utf8
6列名name修改為username
alter table employee change name username varchar(20);
//----------------------------------對錶中數據的增刪改(DML)-------------------------------------------------------------------
create table t_user(
id int primary key auto_increment,
name varchar(20) not null,
email varchar(20) unique
)