mysql 的基础
MySql默认端口号 3306 ;超级用户 root
1)服务的启动与停止
第一种:通过操作系统控制面板的服务选项进行关闭开启服务
第二种:net start mysql cmd命令行开启服务
net stop mysql cmd命令行关闭服务
2)MySql退出
mysql >exit;
mysql >quit;
mysql >\q;
3) MySQL语句规范
关键字与函数名称全部大写
数据库名称、表名称、字段名称全部小写
SQL语句必须以分号结尾
4)库级操作:
4.1创建数据库 {}必选 [] 可选
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name
4.2显示所有数据库
SHOW{DATABASES | SCHEMAS} [LIKE 'PATTERN' | WHERE expr]
4.3修改数据库
ALTER{DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name
4.4删除数据库
DROP{DATABASE | SCHEMA} [IF EXISTS] db_name
5)Mysql数据类型 代表不同的信息类型
int型 (TININT(2^8) SMALLINT(2^15) NEDIUMINT(2^24) INT(2^32) BIGINT(2^64))
float型
double型
日期时间型 (YEAR TIME DATE DATETIME TIMESTAMP)
字符类型 (定长CHAR() 变长VARCHAR() TINYTEXT TEXT NEDIUMTEXT LONGTEXT ENUM('value1',...) SET('value1'...))
6)MySQL创建数据表
6.1 USE命令 打开数据库
6.2在打开的数据库中创建数据表
CREATE [IF NOT EXISTS] table_name(column_name(列名称) data_Type(数据类型),......)
6.3查看数据表
SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]
6.4查看数据表的结构
SHOW COLUMNS FROM tbl_name
6.5记录的插入与查询
INSERT [INTO] tbl_name[(col_name,...)]VALUES(VAL,...)
SELECT expr,expr2...FROM tbl_name
6.6MySQL空值与非空值
NULL字段可以为空 NOT NULL字段禁止为空
CREATE table_name(column_name(列名称) data_Type(数据类型) NULL OR NOT NULL,......)
6.7MySQL自动编号(相当于oracle的自增序列)以及主键primary key
每张表只能存在一个主键且不可重复,主键能保证记录的唯一性,
主键自动NOT NULL,自增的字段必须设置成主键
CREATE table_name(column_name(主键名称) data_Type(整数类型) AUTO_INCREMENT PRIMARY KEY ,......)
6.8唯一约束(只保证数据的唯一性,空值也只能只有一个为空)
可以保证记录的唯一性,唯一约束的字段可以为空值(NULL),每张数据库表可以存在多个唯一约束
CREATE table_name(column_name(唯一键名称) data_Type(整数类型) NOT NULL UNIQUE KEY,......)
6.9DEFAULT默认约束
当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
CREATE TABLE TEST1(SEX ENUM('1','2','3')DEFAULT '3');
7)约束以及表的修改
7.1约束(表级约束 列级约束)
约束保证数据的完整性和一致性
外键约束:FOREIGN KEYP
(1)父表与子表必须使用相同的存储引擎,而且禁止使用临时表
(2)数据表的存储引擎只能为InnoDB。(默认即是)修改.ini配置文件,default-storage-engine=INN0DB
(3)外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同;
(4)外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
CREATE TABLE PROVINCES(
ID SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
PNAME VARCHAR(20) NOT NULL
);
CREATE TABLE USERS(
ID SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
USERNAME VARCHAR(10) NOT NULL,
PID SMALLINT UNSIGNED,
FOREIGN KEY (PID) REFERENCES PROVINCES(ID)
);
查看参照表的参照列索引(加/G是以列表的形式出现):
SHOW INDEES FROM PROVINCES/G;
7.2外键约束的参照操作(在实际项目开发中一般不定义外键约束)
(1)cascade:从父表删除或更新且自动删除或更新子表中匹配的行。
(2)set null:从父表删除或更新行,并设置子表中的外键列为NULL。如果选择使用该选项,必须保证子表列没有指定NOT NULL。
(3)restrict:拒绝对父表的删除或更新操作。
(4)no action:标准SQL的关键字,在MySQL中与restrict相同。
7.3表级约束与列级约束
对一个数据列建立的约束,称为列级约束(可在列前后进行申明)
对多个数据列建立的约束,称为表级约束(只能在列定义后申明)
7.4 MySQL修改数据表 添加/删除列
(1)添加单列
ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]
(2)添加多列
ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)
(3)删除列
ALTER TABLE tbl_name DROP [COLUMN] col_name
(4)删除多列
ALTER TABLE tbl_name DROP [COLUMN] col_name,DROP [COLUMN] col_name...
(5)添加/删除主键约束
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY [index_type] (index_col_name,..)
ALTER TABLE tbl_name DROP PRIMARY KEY
添加/删除唯一约束
ALTER TABLE table_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
ALTER TABLE table_name DROP {INDEX|KEY} index_name
添加/删除外键约束
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [INDEX|KEY] (index_col_name,...) reference_definition
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
添加/删除默认约束
ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
7.5修改数据表(不要随意操作修改列名 表名)
(1)修改列定义
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]
(2)修改数据表
ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
或 RENAME TABLE tbl_name TO new_tbl_name [,tbl_name2 TO new_tbl_name]...
MySQL数据库记录的操作
8) 基础记录的操作
(1)插入数据(如果自增的字段可以用null替代或者default)
INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE}({expr|DEFAULT},...),(...),...
说明:与第一种方式的区别在于。此方法可以使用子查询(SubQuery)
INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},...
此方法可以将查询的结果插入到指定的数据表中(将查询的结果插入数据表)
INSERT [INTO] tbl_name[(col_name,...)]SELECT ...
(2)更新记录
单表更新
UPDATE [LOW_PRIORITY][IGNORE]table_reference SET
col_name1={expr1|DEFAULT}[,col_name1={expr1|DEFAULT}]...
[WHERE where_condition]
(3)删除记录
单表删除
DELETE FROM tbl_name [WHERE where_condition]
(4)SELECT查询记录(可以用AS命名别名)
SELECT select_expr[,select_expr...]
[
FROM table_references
[WHERE where_condition]
[GROUP BY{col_name|position} [ASC|DESC],...]
[HAVING where_condition]
[ORDER BY{col_name|expr|position}[ASC|DESC],...]
[LIMIT{[offset,]row_count|row_count|OFFSET offset}]
]
(5)where 条件的使用(在where表达式中,可以使用MySQL支持的函数或运算符)
(6)GROUP BY查询结果分组
[GROUP BY{col_name|position(select中第一个检索字段)} [ASC|DESC],...]
(7)having语句设置分组条件(在分组以后,可以附加分组条件,条件为聚合函数或者查询的字段阈值)
[HAVING where_condition]
(8)order by语句对查询结果排序(查询结果按照条件的先后进行排序,条件中间加入逗号隔开)
[ORDER BY{col_name|expr|position}[ASC|DESC],...]
(9)limit语句限制查询数据
[limit{[offset,]row_count|row_count|OFFSET offset}]
子查询与连接
(1)子查询
SELECT *FROM t1 WHERE col1=(SELECT col2 FROM t2);
(2)使用比较运算符的子查询
=、>、<、>=、<=、!=、<=>
any、some、all、IN,NOT IN修饰比较运算符 EXIST NOT EXISTS.
SELECT *FROM t1 WHERE col1<(SELECT col2 FROM t2);
INSERT [INTO]tbl_name [(col_name,...)]SELECT ...
(3)UPDATE table_reference SET col_name1={expr1|DEFAULT}}[col_name2={expr2|DEFAULT2}}]...
table_reference 表的关系
inner join,内连接
left[outer]join,左外连接
right[outer]join,右外连接
(4)多表跟新,一步到位
CREATE TABLE [IF NOT EXISTS] tbl_name [(create_definition,....)] select_statement