MySQL笔记
- 格式:pdf
- 大小:250.93 KB
- 文档页数:9
一、初涉数据库启动关闭MySQL服务:打开cmd输入:》net start mysql //所有Windows服务都可以通过这种方式启动和关闭》net stop mysql登入和退出MySQL:》mysql -u usename -p password -h 服务器名(ip) -P 端口号>exit;>quit;>\q;修改提示符:先登入,再设置提示符》prompt 提示符》prompt \u@\h \d>//提示符可以为:\D 完整日期\d 当前数据库\h 服务器名称\u 当前用户常用命令:SELECT VERSION(); //显示当前版本SELECT NOW();//显示当前时间SELECT USER();//显示当前用户MySQL语法:关键字与函数名全部大写;数据库名称、表名称、字段名称全部小写;SQL语句必须以分号结尾。
创建数据库:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name;例如:CREATE DATEBASE db1;>SHOW WARNINGS;//查看警告信息>SHOW CREATE DATEBASE db1;//查看编码信息>CRETE DATEBASE IF NOT EXSITS db2 CHARACTER SET gbk;修改数据库:ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name;删除数据库:>DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;二、数据类型和操作数据表数据类型整型:TINYINT SMALLINT MEDIUMINT INT BIGINT浮点型:FLOAT[(M,D)] M数字的总位数,D小数点后面的位数DOUBLE[(M,D)]日期时间型:YEAR TIME DATE DATETIME TIMESTAMP (一般时间都用数字型表示)字符型:CHAR(M) 定长,如果存入字符数不足M,用空格补足VARCHAR(M) 不定长TINYTEXTTEXTMEDIUMTEXTLONGTEXTENUM(‘value1’,’value2’,…) 可供选择的,比如性别SET ENUM(‘value1’,’value2’,…) 任意组合操作数据表1、登录mysql客户端: mysql -u root -p root -P3306 -h127.0.0.1用户名 密码 端口 ip地址2、》SHOW DATABASES; //查看有哪些数据库3、》USE test;//打开数据库名叫test4、》CREATE TABLE [IF NOT EXISTS] table_name(Column_name data_type,…);例如:CREATE TABLE tb1(Usename VARCHAR(20),Age TINYINT UNSIGNED,Salary float(8,2) UNSIGNED);5、SHOW TABLES;//查看数据表SHOW TABLES [FROM db_name];6、SELECT DATABASE(); //查看当前在哪一个数据库下7、SHOW COLUMNS FROM tb_name //查看数据表结构8、INSERT [INTO] tb_name [(col_name),..] VALUES( VAL,..); //插入记录,col_name 和 val 一一对应9、SELECT ecpr, … FROM ta_name例:SELECT * FROM tb1;空值与非空NULL 字段值可以为空NOT NULL 字段值禁止为空例:>CREATE TABLES tb2(>username VARCHAR(20) NOT NULL,>age TINYINT UNSIGED NULL>);自动编号自动编号(AUTO_INCREMENT),且必须与主键组合使用;默认情况下,其实值为1,每次增量为1.主键主键(PRIMARY KEY)不一定和自动编号一起使用主键约束每张数据表只能存在一个主键主键保证记录的唯一性主键自动为NOT NULL>CREATE TABLE tb3(>id TINYINT UNSIGED AUTO_INCREMENT PRIMARY KEY,>username VARCHAR(20) NOT NULL,>);唯一约束唯一约束(UNIQUE KEY)唯一约束可以保证记录的唯一性;唯一约束的字段可以为空值(NULL);每张数据表可以存在多个唯一约束。
>CREATE TABLE tb>(>id SMALLINT UNSIGED AUTO_INCREMENT PRIMARY KEY,>usename VARCHAR(20) NOT NULL UNIQUE KEY,>age TINYINT UNSIGED)>;默认约束默认约束:DEFAULT当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
>CREATE tb(>id SMALLINT UNSIGED AUTO_INCREMENT PRIMARY KEY.>usename VARCHAR(20) NOT NULL UNIQUE KEY,>sex ENUM(‘1’,’2’,’3’) DEFAULT ‘3’,>);本节总结数据类型:字符型整型浮点型日期时间型数据表操作:插入记录查找记录记录操作:创建数据表约束的使用三、约束以及修改数据表3.1外键约束的要求解析3.1.1约束1、 约束保证数据的完整性和一致性;2、 约束分为表级约束和列级约束;表级约束:针对两个或两个以上的约束列级约束:只针对某一个字段的约束3、 约束类型包括:NOT NULL(非空约束)PRIMARY KEY(主键约束)UNIQUE KEY(唯一约束)DEFAULT(默认约束)FOREIGN KEY(外键约束)外键约束(FOREIGN KEY):保持数据的一致性,完整性,实现一对一或一对多关系。
3.2外键约束要求1、父表与子表必须使用相同的存储引擎,而且禁止使用临时表。
子表:具有外键列的表父表:子表参照的表2、数据表的存储引擎只能为InnoDB。
3、外键列与参照列必须具有相似的数据类型。
其中数字的长度或是否有符号必须相同;而字符的长度可以不同。
外键列:加过FOREIGN关键词的那一列参照列:外键列参照的那一列4、 外键列与参照列必须创建索引,如果外键列不存在索引的话,mysql将自动创建索引。
例:>CREATE TABLE provinces(>id SMALLNT UNSIGED NOT NULL AUTO_INCREMENT PRIMARY KEY,>pname VARCHAR(20) NOT NULL,>);>CREATE TABLE useers(>id TINYINT UNSIGED AUTO_INCREMENT PRIMARY KEY,>username VARCHAR(20) NOT NULL,>pid SMALLINT UNSIGED,>FOREGIN KEY (pid) REFERENCE provinces (id)>);3.3外键约束的参照操作1、CASCADE:从父表删除或更新且自动删除或更新子表中的匹配行;2、SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。
如果使用该选项,必须保证子表列没有指定NOT NULL;3、RESTRICT:拒绝对父表的删除和更新操作;4、NO ACTION:标准SQL关键字,在MYSQL中和RESTRICT相同。
例如:添加父表:》CREATE TABLE provinces(id SMALLINT UNSIGED PRIMART KEY AUTO_INCREMENT,pname VARCHAR(20) NOT NULL);添加子表带有CASCADE操作》CREATE TABLE user1(id SMALLINT UNSIGED PRIMARY KEY AUTO_INCREMENT,usename VARCHAR(20) NOT NULL,pid SMALLINT UNSIGED,FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE );在两张表中插记录,先在父表中插记录,》INSERT provinces (pname) VALUES(‘A’);》INSERT provinces (pname) VALUES(‘B’);》INSERT provinces (pname) VALUES(‘C’);SELECT * FROM provinces;在子表中插入记录INSERT user1 (usename,pid) VALUES(‘TOM’,3);//表示省份对应的名称是C从父表中删除记录DELETE FROM provinces WHERE id = 3;//附表中省份名称为C的那条记录不存在了,则在子表中pid = 3的也全部删除了。
3.4表级约束与列级约束表级约束:针对两个或两个以上的约束列级约束:只针对某一个字段的约束列级约束既可以在列定义时声明,也可以列定义后声明;表级约束只能在列定义后声明。
3.5修改数据表-添加、删除列添加单列:ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]添加多列ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,…)删除列ALTER TABLE tbl_name DROP [COLUMN] col_name删除多列:ALTER TABLE tbl_name DROP [COLUMN] col_name , DROP [COLUMN] col_name。