# 建庫、建表
**1、建庫:**
(1)、create database 或者 create schema 兩種語法使用方法一致。
當創建的數據庫本身存在沒有寫if not exists子句,則會創建失敗報錯。
~~~
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql> create database test;
ERROR 1007 (HY000): Can't create database 'test'; database exists
mysql> create database if not exists test;
Query OK, 1 row affected, 1 warning (0.00 sec)
~~~
(2)、create_specification子句表名創建數據庫的屬性,并存儲在db.opt文件中。
character_set 默認的字符集
collate 默認的排序規則
也可以在數據目錄下創建mkdir一個目錄,mysql會識別為一個數據庫。
(3)、切換數據庫,use命令可以切換數據庫
~~~
mysql> use test1;
Database changed
~~~
(4)、查看當前的數據庫
第一種:
~~~
mysql> select database();
+------------+
| database() |
+------------+
| test1 |
+------------+
1 row in set (0.00 sec)
~~~
第二種:`mysql> status;`
**2、建表**
(1)、create table語句,默認是在本數據庫下創建,也可以指定數據庫。
~~~
create table tbl_name(name varchar(10),age int);
create table test.tbl_name(name varchar(10),age int);
create table if not exists tbl_name(name varchar(10),age int);
~~~
if not exists 表示相同名字時,不創建該表也不報錯。
(2)、temporary 創建臨時表,僅對本鏈接可見,另外的數據庫連接不可見,當本鏈接斷開時,臨時表也自動被drop掉。
~~~
create temporary table test2(sid int,name varcahr(10));
insert into test2 values(1,'a');
select * from test2;
~~~
(3)、like關鍵詞表示基于另一個表的定義復制一個新的空表,空表上的字段屬性和原表相同。只復制結構不會復制內容。
`create table students_copy like students;`
(4)、create table ......as select 語句表示創建表的同時將select查詢結果插入到新表中,但是索引和主外鍵不會同步過來。
`create table students_copy2 as select * from students;`
**ignore和replace表示在插入數據的過程中如果新表中碰到違反唯一約束的情況下,ignore會不插入,replace會替換原有數據。
默認情況下兩個關鍵詞都不寫碰到違反的情況會報錯。**
`INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test9@163.com', '99999', '9999');`
(5)、字段說明
data_type 表示定義的字段類型
not null 表示該字段需要明確值或者要有默認值,否則報錯
null 表示允許字段為空
~~~
mysql> create table students(sid int not null,sname varchar(10) null);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into students values(1,'a');
Query OK, 1 row affected (0.00 sec)
mysql> insert into students values(1);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> insert into students (sid)values(1);
Query OK, 1 row affected (0.01 sec)
mysql> select * from students;
+-----+-------+
| sid | sname |
+-----+-------+
| 1 | a |
| 1 | NULL |
+-----+-------+
2 rows in set (0.00 sec)
~~~
default 表示設置字段的默認值
~~~
mysql> create table students3(sid int,sname varchar(10),gender int default 2);
mysql> insert into students3 values(1,'a',default);
mysql> insert into students3(sid,sname)values(1,'abv');
mysql> select * from students3;
+------+-------+--------+
| sid | sname | gender |
+------+-------+--------+
| 1 | a | 2 |
| 1 | abv | 2 |
+------+-------+--------+
2 rows in set (0.00 sec)
~~~
auto_increment 表示字段為整數或者浮點數類型value+1遞增,value為當前表中該字段最大的值,默認為1開始遞增。一個表中只能有一個自增字段,且該字段必須有key屬性,不能含有default屬性,且插入負值會被當成是很大的正數。
~~~
mysql> create table students4(sid int primary key auto_increment,sname varchar(10));
mysql> insert into students4(sname)values('dadf');
mysql> insert into students4 values(3,'eee');
mysql> insert into students4 (sname) values('ert');
mysql> select * from students4;
+-----+-------+
| sid | sname |
+-----+-------+
| 1 | dadf |
| 3 | eee |
| 4 | ert |
+-----+-------+
3 rows in set (0.00 sec)
~~~
報錯信息:
~~~
mysql> create table students5(sid int auto_increment,sname varchar(10));
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
~~~
constraint 表示為主鍵、唯一鍵、外鍵等約束條件命名,如果沒有命名則mysql會默認給一個。
**primary key 表示該字段為主鍵,主鍵字段必須是唯一的,必須非空。一個表中只能有一個主鍵,主鍵可以包含一個或多個字段。同時也在此key上建立了一個主鍵索引;
unique表示唯一屬性字段,且允許包含多個null值,同時也在這個key上建立了一個唯一索引;。 (每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束)
foreign key 表示該字段為外鍵字段。同時也在這個key上建立了一個index;**
**key/index 表示索引字段
index是數據庫的物理結構,它只是輔助查詢的,它創建時會在另外的表空間(mysql中的innodb表空間)以一個類似目錄的結構存儲。索引要分類的話,分為前綴索引、全文本索引等;
key 是數據庫的物理結構,它包含兩層意義和作用,一是約束(偏重于約束和規范數據庫的結構完整性),二是索引(輔助查詢用的)。
因此,索引只是索引,它不會去約束索引的字段的行為(那是key要做的事情)**
~~~
mysql> create table students6(
-> sid int not null primary key auto_increment,
-> sname varchar(10) unique,gener int,
-> constraint for_1 foreign key(gener) references gener(gener_id));
Query OK, 0 rows affected (0.04 sec)
~~~
- 一、日常運維腳本
- 1.1 批量創建用戶并賦予sudo權限
- 1.2 批量主機建立互信
- 1.3create_images.sh
- 1.4monitor.sh
- 1.5ftp腳本
- 1.6格式化分區
- 1.7簡單的遠程執行腳本
- 二、常用服務使用
- 1 ceph (分布式文件系統)
- 1.1 ceph 簡介
- 1.2 準備環境
- 1.3 開始部署
- 1.4 cephfs掛載
- 1.5 RBD塊存儲
- 1.6 object 對象存儲
- 1.7 集群擴展
- 1.7.1 增加刪除MON
- 1.7.2 增加刪除OSD
- 1.7.3 刪除MDS
- 注意事項
- 遇到的問題
- 1.8ceph查找數據文件
- 1.9卸載并清理環境
- 2、mysql (數據庫)
- 2.1 搭建
- 2.2 使用教程
- 2.2.1 mysql基礎配置
- 2.2.1.1 用戶權限管理
- 2.2.1.2用戶資源限制
- 2.2.1.3 密碼管理
- 2.2.1.4用戶lock
- 2.2.2mysql語法詳解
- 2.2.1建庫、表語句
- 2.2.2.2 插入 insert
- 2.2.2.3更新 update
- 2.2.2.4刪除 delete
- 2.2.2.5查詢 select
- 2.2.6視圖 索引 view index
- 2.2.7 修改 alert
- 2.2.2.8清理 truncate drop
- 2.2.9重命名 rename
- 示例語句
- 2.2.3mysql常用函數
- 2.3.1 對比操作符統概
- 2.3.2對比操作符詳解
- 2.3.3邏輯操作符
- 2.2.4分配操作符
- 2.2.5流程控制函數
- 2.2.6字符串函數
- 2.2.7字符串對比函數
- 2.2.8數字函數
- 2.2.9日期和時間函數
- 2.2.10聚合/格式轉換函數
- 2.2.11 子查詢
- 示例語句
- 2.2.4 mysql 高級應用
- 2.2.4.1 存儲過程 函數
- 2.2.4.2流程控制
- 2.2.4.3游標
- 2.2.4.4觸發器
- 課堂練習
- 2.2.2.5 數據庫設計
- 2.2.5.1 數據類型
- 2.2.5.2存儲引擎
- 2.2.6Innodb內核
- 1、innodb事務和多版本控制
- 2、體系結構
- 3、InnoDB配置
- 4、buffer pool設置
- 5、其他配置
- innodb限制
- 2.7 字符集
- 2.8鎖機制和事務
- 2.8.1鎖機制
- 2.8.2事務
- 2.9分區
- 2.9.1 自動分區
- 2.10復制
- 2.11mysql搬移數據目錄
- 2.12組復制 GR
- 簡介
- 搭建
- 2.3日常運維
- 2.3.1定時任務
- 2.4mycat
- 2.4.1 報錯分析
- 2.4.2 修改字符集
- 2.11 mycat使用
- 2.5遇到問題
- 2.5.1 表名庫名忽略大小寫
- 3、PAAS平臺搭建
- 問題匯總
- 1、docker
- 2、日常運維
- 3.1 Kubernetes
- 3.1 kubernetes 高版本搭建
- 4、GlusterFS搭建
- 5、MooseFS搭建
- 5.1搭建
- 5.2運維
- 5.2.1 mfs日志解析
- 5.2.2清理mfs的垃圾數據
- 5.2.3元數據故障恢復
- 5.2.4 MFS優化
- 5.2.5 配置機架感知
- 5.2.6 客戶端工具集
- 6、集群切換命令
- 7、ntp服務
- 8、monggoDB
- 8.1搭建單機
- 2、搭建集群及分片
- 9、MariaDB Galera Cluster
- 9.1源碼安裝MariaDB
- 9.2galera cluster 優劣
- 9.3 rpm安裝mariadb
- 10 HAproxy1.7搭建
- 11、sysbench 搭建使用
- 0.5版本
- 12 percona-xtradb-cluster
- 13http服務相關
- 13.1 http狀態碼解析
- 14 zookeeper
- 14.1 zookeeper日志查看
- 14.2 配置解析
- 14.3 優化
- 15搭建私有pip源
- 16/var/log的日志文件解釋
- 15 ansible的搭建及使用
- 15.1 搭建
- 15.2 使用說明
- 16. 搭建本地yum源
- zookeeper
- 優化
- 四、開發語言
- 1、GO語言
- 1.1go簡介
- 1.1.1hello_world初識GO
- 1.1.2并發介紹
- 1.1.3 chan介紹
- 1.1.4多返回值
- 1.2go基礎
- 1.2.1數據類型
- 1.2.2 go基礎結構
- 1.2.3 const及變量介紹
- 1.2.3os和time介紹
- 1.2.4 字符串
- 1.2.5條件判斷
- 1.2.6 homework
- go--help
- 1.3 go基礎2
- 1.3.1 數組 array
- 1.3.2切片 slice
- 1.3.3 時間和日期
- 1.3.4指針類型
- 1.3.5函數
- 1.3.6可變參數
- 1.3.7 defer
- 1.3.8遞歸
- 1.9閉包
- 1.10 map
- 1.11 sort
- 1.12 struct 結構體
- 2.perl語言
- 2.1 安裝lib包
- 3 python
- 1.語言基礎
- 2、編程教學
- 2.1變量和序列
- 2.2 條件語句