mysql入门

1、MySQQL由瑞典MySQL AB 公司开发,目前属于Oracle公司;
2、MySQL是开源的免费的;
3、启动MySQL服务: net start mysql(管理员:命令提示符);
4、关闭MySQL服务:net stop mysql;
5、MySQL登陆:mysql -uroot -p
参数                        描述
-D, --database=name         代开指定数据库
--delimiter=name            指定分隔符
-h, --host=name             服务器名称
-p, --password[=name]       密码


6、MySQL退出:exit;  quit; q;
7、按键盘的上下键进行键盘翻越;
8、修改Mysql提示符:
连接客户端时通过参数指定;
shell>mysql -uroot -proot --prompt 提示符

链接上客户端后,同过prompt命令修改
mysql>prompt 提示符
9、MySQL常用命令:
显示当前服务器版本; SELECT VERSION();
显示当前日期时间: SELECT NOW();
显示当前用户: SELECT USER();
SQL语句必须以分号结尾;
10、创建数据库:{}必选的;| 做选择;[]可选;
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name
11、查看当前服务器下的数据列表:
SHOW {DATABASES|SCHEMAS} [LIKE 'pattern'| WHERE expr]
12、修改数据库:
ALTER {DATABASE|SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name;
13、删除数据库:
DROP {DATABASE|SCHEMA} [IF EXISTS] db_name
14、MySQL默认的端口号:3306 ,超级用户是:root
15、数据类型:
数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。
16、整形:TINYINT(-128--127),SMALLINT(-32768--32767,无符号:0--16777215),
MEDIUMINT(-83388608--8388607,无符号:0--16777215),INT(更大),BIGINT(巨大)
17、浮点型:FLOAT[(M,D)] < DOUBLE[(M,D)] ;M是数字总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点精确到大约7位小数位。
18、日期实际型:YEAR/TIME/DATE/DATETIME/TIMESTAMP
19、字符型:CHAR(M):M个字节; VARCHAR(M):L+1个字节,其中L<=M且0<=M<=6355;TINYTEXT;TEXT;MEDIUMTEXT;LONGTEXT;ENUM('value1','value2',...);SET('value1','value2'...)
20、USE : 打开数据库:USE database_name;  select database():显示当前的数据库;
21、创建数据表:
CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type, ... )
例子:mysql>CREATE TABLE tb1(username VARCHAR(20),age TINYINT UNSIGNED,salary FLOAT(8,2) UNSIGNED);
22、查看数据表:SHOW TABLES
查看数据表列表:SHOW TABLES [FROM db_name] [LIKE 'pattern'|WHERE expr];
查看数据表结构:SHOW COLUMNS FROM tbl_name;
23、MySQL记录的插入与查找:INSERT
插入记录:INSERT [INTO] tb_name [(col_name,...)] VALUES(val,...)
如:mysql>INSERT tbl(username,salary) VALUES ('John',4500.69);或者:INSERT tb1 VALUES('Tom',6660.55);
24、SELECT:记录查找:SELECT expr,... FROM tb1_name;
如:mysql>SELECT * FROM tb1_name;
25、空值与非空;
NULL,字段值可以为空; NOT NULL ,字段值禁止为空:
例如:mysql>CREATE TABLE tb2(username VARCHAR(20) NOT NULL, age TINYINT UNSIGNET NULL);
mysql>INSERT tb2 VALUES('Tom',NULL);
mysql>INSERT tb2 VALUES(NULL,26);
26、AUTO_INCREMENT:
自动编号,且必须与住建组合使用;默认情况下,起始值为1,每次的增量为1;
例:mysql>CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT,username VARCHAR(30) NOT NULL);不能创建成功 X;
27、PRIMARY KEY
主键约束;每张数据表只能存在一个主键;主键保证记录的唯一性;主键自动为NOT NULL;
例:mysql>CREATE TABLE tb3(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL);
mysql>INSERT INTO tb3 VALUES('Tom'),VALUES('John'),VALUES('Rose'),VALUES('Dimitar');
mysql>SELECT * FROM tb3;
例2:mysql>CREATE TABLE tb4(id SMALLINT UNSIGNED PRIMARY KEY,username VARCHAR(20) NOT NULL);
mysql>INSERT tb4 VALUES(4,'Tom'); mysql>INSERT tb4 VALUES(22,'John');成功;
mysql>INSERT tb4 VALUES(4,'Rose');错误;
28、MySQL唯一约束:UNIQUE KEY;
唯一约束;唯一约束可以保证记录的唯一性;唯一约束的字段可以为空值(NULL);每张数据表可以存在多个唯一约束
例:mysql>CREATE TABLE tb5(id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
->username VARCHAR(20) NOT NULL UNIQUE KEY,
->age TINYINT UNSIGNED);
查询:mysql>INSERT tb5(username,age) VALUES('Tom',22);
mysql>INSERT tb5(username,age) VALUES('Tom',22);错误,重名
29、MySQL默认约束:DEFAULT
默认值;当插入记录时,如果没有明确为字段赋值,则自动赋予默认值;
例:mysql>CREATE TABLE tb6(id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
->username VARCHAR(20) NOT NULL UNIQUE KEY, sex ENUM('1','2','3')default '3');
写入:mysql>INSERT tb6(username) VALUES('Tom'); mysql>SELECT *FROM tb6;
30、MySQL外键约束的要求解析:
约束保证数据的完整性和一致性; 约束分为表级约束和列级约束;
约束类型包括:NOT NULL(非空约束);PRIMARY KEY(主键约束);UNIQUE KEY(唯一约束);DEFAULT(默认约束);FOREIGN KEY(外键约束)
31、MySQL外键约束的要求解析:FOREIGN KEY:
父表和字表必须使用相同的存储引擎,而且禁止使用临时表; 数据表的存储引擎只能为InnoDB;
外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
步骤:编辑数据表的默认存储引擎:MySQL配置文件:default-stroage-engine=InnoDB
mysql>USE test;  mysql>CREATE TABLE provinces(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
->pname VARCHAR(20) NOT NULL);
mysql>CREATE TABLE users(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,username VARCHAR(10) NOT NULL,
->pid BIGINT FOREIGN KEY (pid) REFERENCES provinces(id); 不能创建成功;
mysql>CREATE TABLE users(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,username VARCHAR(10) NOT NULL,
->pid SMALLINT  UNSIGNED  FOREIGN KEY (pid) REFERENCES provinces(id);创建成功;
查看:mysql>SHOW INDEXES FROM provincesG; mysql>SHOW CREATE TABLE users;
32、外键约束的参照操作:
CASCADE:从父表删除或更新且自动删除或更新字表中匹配的行;
SET NULL:从父表删除或更新行,并设置字表中的外键列为NULL。如果使用该选项,必须保证字表列没有指定NOT NULL;
RESTRICT:拒绝对父表的删除或更新操作。 ; NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同
例:mysql>CREATE TABLE users1(
id SMALLINT(5) UNSIGNED AUTO_INCREMENT,
username VARCHAR(10) NOT NULL PRIMARY KEY,
pid SMALLINT(5)  UNSIGNED DEFAULT NULL,
FOREIGN KEY (pid) REFERENCES provinces(id) ON DELETE CASCADE
->);必须现在父表中插入信息
mysql>INSERT provinces(pname) VALUES('A'),VALUES('B'),VALUES('C');
mysql>INSERT users1(username,pid)VALUES('Tom',3);成功但mysql>INSERT users1(username,pid)VALUES('John',7);错
mysql>INSERT users1(username,pid)VALUES('Roose',3);
mysql>DELETE FROM provices where id=3;字表中也不存在了。
33、表级约束与列级约束:
对一个数据列建立的约束,称为列级约束。;对多个数据列建立的约束,称为表级约束。;
列级约束既可以在列定义时声明,也可以在列定义后声明,;表级约束只能在列定义后声明。
34、修改数据表:
添加单列:ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]如果省略FIRST or AFTER则会放到末尾
mysql>show columns from users1;
mysql>ALTER TABLE users1 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10;
mysql>SHOW COLUMNS FROM users;
mysql>ALTER TABLE users1 ADD password VARCHAR(32) NOT NULL AFTER username;
mysql>ALTER TABLE users1 ADD truename VARCHAR(20) NOT NULL FIRST; mysql>SHOW COLUMNS FROM users1;
添加多列:
ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)
删除列:
ALTER TABLE tbl_name DROP [COLUMN] col_name; mysql>ALTER TABLE users1 DROP password, DROP age;
35、添加主键约束:
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
例:mysql>CREATE TABLE users2( username VARCHAR(10) NOT NULL, pid SMALLINT  UNSIGNED );
mysql>ALTER TABLE users2 ADD id smallint unsigned;
mysql>ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY (id);添加主键约束  mysql>SHOW COLUMNS  FROM users2;
mysql>ALTER TABLE users2 ADD UNIQUE (username);添加唯一约束
mysql>ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces(id);外键约束
添加/删除默认约束
ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal|DROP DEFAULT}
mysql>ALTER TABLE users2 ADD age TINYINT UNSIGNED NOT NULL; mysql>ALTER TABLE users2  ALTER age SET DEFAULT 15;
mysql>ALTER TABLE users2  ALTER age DROP DEFAULT;
删除主键约束
ALTER TABLE tbl_name DROP PRIMARY KEY
删除唯一约束
ALTER TABLE tbl_name DROP {INDEX|KEY} index_name
mysql>SHOW INDEXES FROM  users2 查看约束的名字  
mysql>ALTER TABLE users2 DROP INDEX username;
删除外键约束:
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
mysql>SHOW CREATE TABLE user2 查看外键约束名字;
mysql>ALTER TABLE users2 DROP FOREIGN KEY  user2_ibfk_1; mysql>ALTER TABLE users2 DROP INDEX pid删除索引
修改列定义:
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition  [FIRST|AFTER col_name]
mysql>ALTER TABLE user2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;修改位置
mysql>ALTER TABLE user2 MODIFY id TINYINT UNSIGNED NOT NULL;修改列定义
修改列名称:
ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
mysql>ALTER TABLE use2 CHARNGE pid p_id TINYINT UNSIGNED NOT NULL;
数据表格更名:
方法1:ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
方法2:RENAME TABLE tbL_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2]...
例:mysql>ALTER TABLE users2 RENAME users3; mysql>show tables;
例:mysql>RENAME TABLE users3 TO users2;

原文地址:https://www.cnblogs.com/gufengchen/p/11062665.html