MySQL(一)

乐观者在灾祸中看到机会;悲观者在机会中看到灾祸。


本讲内容:MySQL


一、基础知识

1、启动和停止MySQL服务
方法1:运行--控件面版--管理工具--服务
方法2:命令行
net start mysql


2、MySQL登陆
mysql -uroot -pjin1230 -P3306   如果我们不想被别人知道密码可以先不写,按回车后再输入

mysql -V :输出版本信息并退出;不登录查看当前mysql的版本信息命令 mysql -V 注意是大写的 V
mysql -u :用户名;
mysql -p :密码;
mysql -P :端口号;
mysql -h :服务器名称;
mysql 默认登录使用的主机为本地localhost(127.0.0.1) 默认端口为3306 
1,如果连接的不是本地,请使用-h来指定
2,如果使用的端口不是3306,请使用-P来指定


3、MySQL退出
mysql > exit;
mysql > quit;
mysql > \q;


4、修改MySQL提示符
方法一:mysql -uroot -pjin1230 --prompt \h
方法二:localhostprompt mysql>  将localhost改回mysql>
\D 完整的日期, 
\d 当前数据库
\h 服务器名称
\u 当前用户




二、常用命令

MySQL语句的规范
1、关键字与函数名称全部大写(小写也不报错)
2、数据库名称、表名称、字段名称全部小写
3、SQL语句必须以分号结尾


1、显示当前服务器版本
SELECT VERSION();


2、显示当前日期时间
SELECT NOW();


3、显示当前用户
SELECT USER();



4、创建数据库
CREATE DATABASE t1;
创建数据库并指定编码方式(不写就是默认的编码方式)
CREATE DATABASE t2 CHARACTER SET gbk;

5、显示所有的数据库(安装好时自动有四个数据库文件)
SHOW DATABASES;


6、显示创建数据库的指令信息(譬如想查看数据库的编码方式)
SHOW CREATE DATABASE t1;

7、修改数据库的编码方式
ALTER DATABASE t2 CHARACTER SET=utf8;

8、删除数据库
DROP DATABASE t2;


9、打开数据库(然后才可以建表)
USE 数据库名称;


10、显示当前打开的数据库
SELECT DATABASE();


11、创建数据表(字段逗号分开,最后不用逗号)
CREATE TABLE tb1(
username VARCHAR(20),
age TINYINT UNSIGNED,
salary FLOAT(8,2) UNSIGNED
);



12、查看当前选择的数据库的所有表
SHOW TABLES;
查看mysql数据库中的所有表,当前选择数据库位置不变。
SHOW TABLES FROM mysql


13、查看数据表结构
SHOW COLUMNS FROM tbl_name;



14、插入记录
INSERT tbl_name[(col_name,……)] VALUES();

15、查找表所有记录
SELECT * FROM tbl_name;



16、空值与非空(创建表时用到,默认是NULL)
1,NULL,字段值可以为空
2,NOT NULL,字段值禁止为空



17、主键约束 PRIMARY KEY(会自动创建索引)
1,每张数据表只能存在一个主键
2,主键保证记录的唯一性
3,主键自动为NOT NULL

18、自动编号 AUTO_INCREMENT(自动编号,且必须与主键配合使用)
默认情况下,起始值为1, 每次增量为1.





19、唯一约束 UNIQUE KEY
1,唯一约束可以保证记录的唯一性
2,唯一约束的字段可以为空值(NULL)
3,每张数据表可以存在多个唯一约束



20、默认值 DEFAULT
如果没有为字段赋值 自动赋予默认值



21、外键约束

要求:
1. 父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
子表: 具有外键列的表。
父表: 子表参照的表。
2. 数据表的存储引擎只能为InnoDB。
3. 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4. 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

例子:

父表:
mysql> CREATE TABLE provinces(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, //参照列: id
pnane VARCHAR(20) NOT NULL
);
子表:
mysql> CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
pid SMALLINT UNSIGNED, 
FOREIGN KEY (pid) REFERENCES provinces (id) //外键列: pid 参照列:provinces.id
);


22、外键约束的参照操作

FOREIGN KEY (child_id) REFERENCES dad_tbname(dad_id) ON DELETE CASCADE
1. CASCADE: 从父表删除或更新且自动删除或更新子表中匹配的行。
2. SET NULL: 从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL。
3. RESTRICT: 拒绝对父表的删除或者更新操作。
4. NO ACTION: 标准SQL的关键字,在MySQL中与RESTRICT相同。

子表:
mysql> CREATE TABLE users1(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
pid SMALLINT UNSIGNED, 
FOREIGN KEY (pid) REFERENCES provinces (id) <span style="font-family:Microsoft Yahei, Hiragino Sans GB, Helvetica, Helvetica Neue, 微软雅黑, Tahoma, Arial, sans-serif;color:#14191e;"><span style="line-height: 28px;">ON EDLETE CASCADE</span></span> //外键列: pid 参照列:provinces.id
);


23、查询表的索引

show indexes from tbl_name

show indexes from tbl_name\G   列表显示


24、修改数据表-添加或删除列

ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
例如:
ALTER TABLE users ADD password VARCHAR(32) NOT NULL AFTER username;//在username后面添加
(2)添加多列
ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)
(3)删除列
ALTER TABLE tbl_name DROP [COLUMN] col_name
例如:ALTER TABLE users DROP truename;
一次删除多列:
ALTER TABLE uses DROP password,DROP age;


1、添加主键约束:
ALTER TABLE tbl_name ADD PRIMARY KEY (col_name);
2、添加唯一约束
ALTER TABLE tbl_name ADD UNIQUE(col_name);
3、添加外键约束
ALTER TABLE tbl_name ADD FOREIGN KEY [index_type](外键列) REFERENCES 父表(参考列);
4、添加/删除默认DEFAULT约束
ALTER TABLE tbl_name ALTER col_name SET DEFAULT literal / DROP DEFAULT;


1、删除主键约束:ALTER TABLE 表名 DROP PRIMARY KEY;
2、删除唯一约束:ALTER TABLE 表名 DROP {INDEX|KEY} 约束所在字段;
3、删除外键约束:ALTER TABLE 表名 DROP FOREIGN KEY 外键索引名字;
4、查看外键约束名称:SHOW CREATE TABLE 表名;


三、数据类型

1.整形
1.1 tinyint 1字节(如果存储年龄用1个字节足以)
有符号:-128到127 (-2的7次方到 2的7次方-1)
无符号 :0-255 (0-2的8次方-1)UNSIGNED

1.2 smallint 2字节
有符号:-32768到32768 (-2的15次方到 2的15次方-1)
无符号 :0-65535 (0-2的16次方-1)

mediumint 3字节
有符号:-8388608到8388608 (-2的23次方到 2的23次方-1)
无符号 :0-16777215 (0-2的24次方-1)

int 4字节
有符号:-2147483648到2147483648 (-2的31次方到 2的31次方-1)
无符号 :0-4294967295 (0-2的32次方-1)

bigint 8字节
有符号:-9223372036854775808到9223372036854775808 (-2的63次方到 2的63次方-1)
无符号 :0-18446744073709551616 (0-2的63次方-1)


2、浮点型
float(单精度浮点):float[(M,D)] m是数字总位数,d是小数点后面的位数,如果md被省略,会根据硬件允许的限制来保存值
double(双进度浮点):double[(M,D)]一般是float存储范围的十倍
FLOAT[(M总位数,D小数点后位数)]M>=D。单精度浮点,保留小数点后7位


3、时间日期型

year 1字节 可存取两位或四位 1970 到 2069年
time 3字节 -8385959 到 8385959
date 3字节 1000-1月1号 到 9999年12月31日
datetime 8字节 1000-1月1号 零点 9999年12月31日 23点59分59秒
timestamp 4字节 197000101零点 2037年之间


4、字符型

1、CHAR(M):定长类型,比如CHAR(5),如果我们只赋值abc,那么系统会自动在后面补两个空格0——255
2、VARCHAR(M):变长类型,L+1个字节,其中L<=M且0<=M0——65535
3、ENUM('value1','value2'...)枚举值,提供几个选项,选择其中一个,如:性别('男','女','保密')
4、SET('value1','value2'...) 最多64个成员,可以任选里面其中几个,任意排列组合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值