一天學會MySQL(一)
一天學會MySql
1.安裝MySql(ubuntu 16.04)
-
安裝
sudo apt-get update #更新软件源 sudo apt-get install mysql-server #安装mysql
-
启动和关闭mysql服务器
service mysql start service mysql stop
-
確認是否安裝成功
sudo netstat -tap | grep mysql
mysql节点处于LISTEN状态表示启动成功
-
安裝可視化界面
sudo apt-get install mysql-workbench
2.mysql的基本操作
-
登錄數據庫
mysql -uroot -p123 //123是密碼,沒有設置可不寫
-
如何查看有什么数据库?
SHOW DATABASES;
-
如何选择数据库?
USE databasesname;
-
如何查看该数据库中有哪些表?
SHOW TABLES;
-
如何查询表中的数据?
SELECT * FROM tablename;
-
如何查询表中的某一條数据?
SELECT * FROM tablename WHRER 條件;
-
如何退出数据库服务器?
exit; 或者 ctrl+z
-
如何在数据库服务器中创建自己的数据库?
CREATE DATABASE databasesname;
-
如何创建一个数据表? 创建一个pet表
CREATE TABLE pet( name VARCHAR(20), owner VARCHAR(20), specise VARCHAR(20), sex CHAR(1), brith DATE, death DATE );
+---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | name | varchar(20) | YES | | NULL | | | owner | varchar(20) | YES | | NULL | | | specise | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 1.Field 字段 2.Type類型(int,var,varchar)
-
查看創建的數據表的結構
DESCRIBE pet;
-
如何插入数据?
INSERT INTO pet VALUES('kk','cc','dog','1','1998-8-2',null); +------+-------+---------+------+------------+ | name | owner | specise | sex | birth | +------+-------+---------+------+------------+ | kk | cc | dog | 1 | 1998-08-02 | +------+-------+---------+------+------------+
-
常用數據類型
在 MySQL 中,有三种主要的类型:Text(文本/字符串)、Number(数字)和 Date/Time(日期/时间)类型。
Text(文本/字符串)類型:
Number(数字)類型:
Date/Time(日期/时间)类型:
-
刪除數據
DELETE FROM tablesName WHRER 条件;
-
更改數據
UPDATE tableName SET 字段1=值1,字段2=值2 ... WHERE 条件;
稍微總結一下數據庫的常用操作: 增刪改查
增(INSERT)/刪(DELETE)/改(UPDATE)/查/(SELECT)
強調一點,數據庫的操作語句也可以使用小寫,這使用大寫,是爲了與後面的自命名區分。
3.mysql的建表約束
-
主鍵約束( PRIMARY KEY)
能够唯一确定一张表中的一条记录,增加主键约束之后,就可以使得字段不重复而且不为空
CREATE TABLE user(id INT PRIMARY KEY,name VARCHAR(20)) 运行DESCRIBE user1; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+
PRIMARY KEY表示設置id爲主鍵,通過id來區分不同記錄,插入同樣id或者空id的記錄,都會報錯。
-
聯合主鍵
CREATE TABLE user2( id INT, name VARCHAR(20), password VARCHAR(20), PRIMARY KEY(id,name) ); 运行DESCRIBE user2; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(20) | NO | PRI | NULL | | | password | varchar(20) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ INSERT INTO user2 VALUES (1,'老王','123456'); INSERT INTO user2 VALUES (2,'老王','123456'); +----+------+----------+ | id | name | password | +----+------+----------+ | 1 | 老王 | 123456 | | 2 | 老王 | 123456 | +----+------+----------+
复合主键只要字段不全相同,可以允许重復.同時,聯合主鍵都不允許爲空。
-
自增約束
CREATE TABLE user3( id INT PRIMARY KEY AUTO_INCREAMENT, name VARCHAR(20)); 运行DESCRIBE user3; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ INSERT INTO user3(name) VALUES('张三'); INSERT INTO user3(name) VALUES('李四'); +----+------+ | id | name | +----+------+ | 1 | 张三 | | 2 | 李四 | +----+------+ 無需定义id值 隨着插入的記錄數遞增。
-
建表之後增加主鍵約束
CREATE TABLE user4( id INT, name VARCHAR(20) ); 运行DESCRIBE user4; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 加入主键约束: ALTER TABLE user4 ADD PRIMARY KEY(id); 再次运行DESCRIBE user4; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 删除主键约束: ALERT TABLE user4 DROP PRIMARY KEY; 运行DESCRIBE user4查看表结构: +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 使用modify 修改字段.添加约束: ALTER TABLE user4 MODIFY id INT PRIMARY key; 使用DESCRIBE user4 查看表结构: +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 给主键设置自增长: ALTER TABLE user4 MODIFY id INT AUTO_INCREMENT; 运行 DESCRIBE user4 查看表结构: +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+
-
唯一主鍵約束
CREATE TABLE user5(id INT,name VARCHAR(20)); DESCRIBE user5; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ ALTER TABLE user5 ADD UNIQUE(name); DESCRIBE user5; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(20) | YES | UNI | NULL | | +-------+-------------+------+-----+---------+-------+ 還有其他幾種設置唯一主鍵的方法: 1.CREATE TABLE user5(id INT,name VARCHAR(20) UNIQUE); 2.CREATE TABLE user5(id INT,name VARCHAR(20), UNIQUE(name)); 3.一次行創建多個唯一約束CREATE TABLE user5(id INT,name VARCHAR(20), UNIQUE(id,name)); 此時id和name不都重復就行。 DESCRIBE user5; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | MUL | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 4.ALTER TABLE user5 MODIFY name varchar(20) unique; 刪除唯一主鍵約束: ALTER TABLE user5 DROP INDEX name;
-
非空約束
修飾的字段不能爲空
CREATE TABLE user6 (id INT,NAME VARCHAR(20) NOT NULL); desc user6; 可以看到name不允許爲空。 +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | NAME | varchar(20) | NO | | NULL | | +-------+-------------+------+-----+---------+-------+ 下句沒有給name值,就會報錯。 INSERT INTO user6 (id) VALUES(1); INSERT INTO user6 (name) VALUES('zhangsan'); +------+----------+ | id | NAME | +------+----------+ | 1 | zhangsan | | NULL | zhangsan | +------+----------+ id可以爲NULL,而NAME不允許。 下面語句也可設置非空約束 ALTER TABLE user6 MODIFY id INT NOT NULL;
-
默認約束
如果沒有傳值,就會使用默認值
CREATE TABLE user7(id INT,name VARCHAR(20),age INT DEFAULT 10); 設置age的默認值爲10. DESC user7; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | age | int(11) | YES | | 10 | | +-------+-------------+------+-----+---------+-------+ 插入:INSERT INTO user7 VALUES(1,'z'); SELECT * FROM user7; +------+------+------+ | id | name | age | +------+------+------+ | 1 | Z | 10 | +------+------+------+
-
外鍵約束
涉及到兩個表:主表和副表 父表 CREATE TABLE user8(id INT PRIMARY KEY, name VARCHAR(10)); DESC user8; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(10) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ INSERT INTO user8 VALUES (1,'一班'); +----+--------+ | id | name | +----+--------+ | 1 | 一班 | +----+--------+ 子表: CREATE TABLE user9(id INT PRIMARY KEY, name VARCHAR(10),class_id INT,FOREIGN KEY(class_id) REFERENCES user8(id)); +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(10) | YES | | NULL | | | class_id | int(11) | YES | MUL | NULL | | +----------+-------------+------+-----+---------+-------+ 注意:1.子表的class_id引用父表的id,父表中id沒有的值,在子表中是不可以使用的 2.父表中的記錄被子表引用,父表是不能刪除的, 例如: DELETE user8 WHERE name = 'zhangsan'; 出现:Cannot delete or update a parent row:不能删除主表中的行
參考
1.https://blog.csdn.net/weixin_42209572/article/details/98983741
2.https://www.bilibili.com/video/BV1Vt411z7wy?p=9
原文地址:https://www.cnblogs.com/depth-perception/p/12582839.html
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- spring之IOC(控制反转)和DI(依赖注入)
- 【colab pytorch】指定使用的显卡
- Python自学成才之路 迭代器的使用
- 回溯法--全排列
- 【colab pytorch】张量操作
- 『开发技巧』python :与-> 操作来给函数参数增加元信息
- 【python-leetcode78-子集】子集
- 【colab pytorch】模型定义
- 初级爬虫--爬取拉勾网职位信息
- requests库
- hadoop之完全分布式集群配置(centos7)
- XPath
- 62. Vue 饿了么Mint UI组件的基本使用
- 【colab pytorch】数据处理
- requests+lxml+xpath爬取豆瓣电影