MySql基本操作和使用

来源:互联网 发布:淘宝一个心要多少单 编辑:程序博客网 时间:2024/05/17 22:58

数据库

创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name CHARACTER SET [=] utf8;

或者一遍直接  CREATE DATABASE mctest;    编码会默认utf8

更改编码格式

ALTER DATABASE database_name CHARACTER SET [=] charaset_name;

比如: ALTER DATABASE database_name CHARACTER SET gbk;

查看该数据库的基本信息,比如编码格式:

SHOW CREATE DATABASE database_name;

查看所有数据库信息:

SHOW DATABASES  [like 'test%'];

当你在客户端查询数据中文乱码时:

可以采用 set names gbk/utf8(编码格式);的方式来临时让数据显示正常 --->该方式只对客户端显示的数据有影响,对数据库本身没影响

set password=密码可以来修改密码

删除数据库

DROP DATABASE [IF EXISTS] database_name; 

其他操作

使用某数据库:

USE database_name;

查看数据库下的表:

SHOW TABLES FROM database_name [LIKE 'test%'];

展示数据表的列信息

SHOW COLUMNS FROM table_name;

展示数据表的索引信息

SHOW INDEX FROM table_name;

展示表名以head_tablename开头的表状态信息

SHOW TABLE STATUS  FROM database_name  [LIKE  'test%'[\G]];


数据类型

类型大小范围(有符号)范围(无符号)用途TINYINT1 字节(-128,127)(0,255)小整数值SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)大整数值INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值BIGINT8 字节(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值FLOAT4 字节(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度
浮点数值DOUBLE8 字节(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度
浮点数值DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值类型大小
(字节)范围格式用途DATE31000-01-01/9999-12-31YYYY-MM-DD日期值TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间YEAR11901/2155YYYY年份值DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值TIMESTAMP41970-01-01 00:00:00/2037 年某时YYYYMMDD HHMMSS混合日期和时间值,时间戳类型大小用途CHAR0-255字节定长字符串VARCHAR0-65535 字节变长字符串TINYBLOB0-255字节不超过 255 个字符的二进制字符串TINYTEXT0-255字节短文本字符串BLOB0-65 535字节二进制形式的长文本数据TEXT0-65 535字节长文本数据MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据MEDIUMTEXT0-16 777 215字节中等长度文本数据LONGBLOB0-4 294 967 295字节二进制形式的极大文本数据LONGTEXT0-4 294 967 295字节极大文本数据

注:varcha(20)   这个20在MySql5之前代表的是可存储的字节,在MySql5之后代表的是字符长度


基本语句

数据表

UNSIGNED代表无符号  比如:TINYINT UNSIGNED
AUTO_INCREMENT自动编号,默认情况下起始为1,增量为1  (必须与主键组合使用)
MySql的字段唯一约束用: UNIQUE KEY  描述

(primary key, unique key, default, not null,foreign key)-->约束  foreign key在实际开发没用到过,不管

添加单列(后面的first表示放在表的最前方,after col_name表示放在某字段的后面):

ALTER TABLE table_name ADD [COLUMN] column_name column_definition [FIRST AFETR column_name];

添加多列

ALTER TABLE table_name ADD [COLUMN] column_name column_definition,ADD [COLUMN] column_name column_definition,.....;

删除字段

ALTER TABLE table_name DROP [COLUMN] column_name column_definition [,DROP [COLUMN] column_name column_definition..]

修改字段

用MODIFY (下面的约束其实也可以用这个来改)修改的时候也可以移动字段的位置

字段的名字

ALTER TABLE table_name change col_name col_name_new column_type;

添加约束(下面是一个主键约束的例子)

ALTER TABLE table_name ADD [CONSTRAINT [symbol]] PRIMARY KEY (column_name,...);

删除约束

ALTER TABLE table_name DROP {primary key | ...} constraint_name;

添加/删除默认约束

ALTER TABLE table_name ALTER [column] column_name {set default default_value | drop default};

其实多种字段的操作也是可以混用的,比如:

ALTER TABLE table_name ADD [COLUMN] column_name column_definition,DROP [COLUMN] column_name;

修改数据库表名

ALTER TABLE table_name RENAME [as|to]table_name_new;
RENAME table table_name to new_table_name [able_name to new_table_name,..];

记录

插入语句

普通:
insert [into] table_name[(columns)]  values(column_values),(column_values)...;    values 可以插入多个行记录    into是可以省略的
insert [into] table_name[(columns)]  value(column_values);  value 代表只能插入一行数据
如果表中有自增主键,table_name后面又不写列名的话,值可以用NULL或DEFAULT来表示自增。

Insert SET:
insert [into] table_name set col_name=col_value,col_name=col_value,..;
例如:insert into student set RowId=default,username='test',age=23;

Insert Select:
insert [into] table_name select col_name... from table_name2;
更新语句

update table_name set col_name=col_value,col_name=col_value,..;

删除语句

DELETE FROM table_name [WHERE ...];

查询语句

SELECT * 
FROM  TABLE_NAME
WHERE ..
GROUP BY ..
HAVING ...
ORDER BY ..
LIMIT ..

HAVING(一般和group by结合使用)
having后面必须是聚合函数(SUM,AVG之类的)或者查询语句中查询出现的字段
LIMIT 
LIMIT num;表示从第一条开始,共num个记录
比如 limit 1;表示取1个记录
LIMIT num1,num2;表示从第num1个之后开始num2个记录, 
比如 limit 3,2; 表示第4个和第5个记(即3之后2个记录);


子查询和连接

子查询

子查询必须出现在圆括号内,外层语句可以是增删改查。

由和子查询的比较运算产生的关键字 ANY  SOME  ALL

举例:

取出表1的id大于所有表2的id的值

select * from t1 where id > ALL (select id from t2)

[NOT] IN

=ANY 和 IN等价

!=ALL<>ALL与NOT IN等价

[NOT] EXISTS

查出一条或多条返回true
查不出返回false

SELECT,多表删除,多表更新也是可以用下面的这些连接的

INNER JOIN (内连接)

MySql中JOIN,INNER JOIN,CROSS JOIN是等价的。

LEFT JOIN(左外链接)

RIGHT JOIN(右外连接)

多表删除删重复数据时,可以考虑先查出重复的然后和所有的关联,删掉左边的id>右边表的id的数据,就可以只留一个了。

运算符和函数

字符函数

CONCAT() 可以连接两个及以上的数据,所以参数可以有两个及以上
CONCAT('A','-','B')    --->   A-B
CONCAT_WS()可以用指定的分隔符分割两个及以上的数据
CONCAT_WS('-','A','B','C')  -------> A-B-C
FORMAT()格式化数字的(后面的数代表精确到小数点后几位)
FORMAT(123.456,2)---->123.46
LEFT()取字符串从左边数共几个字符
LEFT('ABCDEFG',3)-------->ABC

SELECT  TRIM('    MA C  ')--->MA C

SELECT TRIM(LEADING '?' FROM '??MA??TEST????')--->MA??TEST????

SELECT TRIM(TRAILING '?' FROM '??MA??TEST????')--->??MA??TEST

SELECT  SUBSTRING('MYSQL',1,2)--->MY

SELECT  SUBSTRING('MYSQL',3)--->SQL

SELECT  SUBSTRING('MYSQL',-2)--->QL

LIKE

%代表任意个字符

_代表任意一个字符

%%%当希望有的%就是代表字符时,可以这样写   like '%O%%' escape 'O';


数值运算符和函数

日期函数

NOW() ----> 2017-07-17 20:57:10
CURDATE() ----> 2017-07-17
CURTIME() -----> 20:57:10
DATE_ADD('2017-07-17',INTERVAL 365 DAY) 2018-07-17  还可以是负数,可以是MONTH,YEAR等
DATEDIFF('2017-07-17','2018-07-17')   -------->   -365

其他函数





原创粉丝点击