###1mysql操作(整理自菜鸟教程)
1.登录:mysql -u root -p
password:xxxxx
2.创建数据库:create database database_name;
查看数据库:show databases;
删除数据库:drop database database_name;
选择数据库:use database_name;
3.创建数据表:表名,字段(字段名,类型,属性(限制条件)),表限制条件(主键,引擎,默认编码等)
mysql> CREATE TABLE table_name(
-> demo_id INT NOT NULL AUTO_INCREMENT,
-> demo_name VARCHAR(100) NOT NULL,
-> demo_text VARCHAR(40) NOT NULL,
-> demo_today DATE,
-> PRIMARY KEY ( demo_id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
删除数据表:drop table table_name;
修改表名:ALTER TABLE testalter_tbl RENAME TO alter_tbl;
添加字段:ALTER TABLE testalter_tbl ADD i INT FIRST;(添加到最前面,默认最后面)
ALTER TABLE testalter_tbl ADD i INT AFTER c;(添加到字段c后面)
删除字段:ALTER TABLE testalter_tbl DROP i;
修改字段:ALTER TABLE testalter_tbl MODIFY c CHAR(10);(修改字段类型)
ALTER TABLE testalter_tbl CHANGE i j BIGINT;(修改字段名称+类型)
4.插入数据:insert into table_name ( field1, field2,…fieldN ) values( value1, value2,…valueN );
查询数据:select column_name,column_name FROM table_name 条件语句
查询全部:select * from table_name
更新数据:update table_name SET field1=new-value1,field2=new-value2 [where Clause]
删除数据:delete from table_name where demo_id=3;
5.其他:
字句:where
like :SELECT * from runoob_tbl WHERE url LIKE ‘%COM’;
union:union 操作符用于连接两个以上的 select 语句的结果组合到一个结果集合中。多个 select 语句会删除重复的数据。
排序:order by 字段名 DESC(降序)默认为升序ASC。
groupby,roullup,coalesce(a,b,c)(a<mark>null,选择b,b也</mark>null,则选c):
mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
+--------------------------+--------------+
| coalesce(name, '总数') | singin_count |
+--------------------------+--------------+
| 小丽 | 2 |
| 小明 | 7 |
| 小王 | 7 |
| 总数 | 16 |
+--------------------------+--------------+
4 rows in set (0.01 sec)
6.连接:inner join,left join,right join
7.正则表达式(使用like时)
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
[...] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^...] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
p1|p2|p3 匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
8.事务:数据库常用事务有:commit(提交),rollback(回滚)。
9.索引:
###2类型&属性
时间类型
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME=DATE + TIME
TIMESTAMP=DATETIME-格式
整型有符号
tinyint 1字节,范围(-128~127)
smallint 2字节,范围(-32768~32767)
mediumint 3字节,范围(-8388608~8388607)
int 4字节,范围(-2147483648~2147483647)
bigint 8字节,范围(+-9.22*10的18次方)
整形无符号
tinyint unsigned的取值范围为0~255。
浮点型(m总个数,d小数位)
float(m, d) 4字节,单精度浮点型,
double(m, d) 8字节,双精度浮点型,
decimal(m, d) decimal是存储为字符串的浮点数
字符串
1字节(byte)=8bit
1个字符(char)=2字节,一个汉字是2字符
short 2,char 2,float 4,int 4,long 8,double 8
char(n) 固定长度,最多255个字符
varchar(n) 可变长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符
char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。超过char和varchar的n设置后,字符串会被截断。char在存储的时候会截断尾部的空格,varchar和text不会。varchar会使用1-3个字节来存储长度,text不会。
其他类型
1.enum(“member1″, “member2″, … “member65535″)
enum数据类型就是定义了一种枚举,最多包含65535个不同的成员。当定义了一个enum的列时,该列的值限制为列定义中声明的值。如果列声明包含NULL属性,则NULL将被认为是一个有效值,并且是默认值。如果声明了NOT NULL,则列表的第一个成员是默认值。
2.set(“member”, “member2″, … “member64″)
set数据类型为指定一组预定义值中的零个或多个值提供了一种方法,这组值最多包括64个成员。值的选择限制为列定义中声明的值。
常用属性
1.auto_increment:id自增
2.binary:binary属性只用于char和varchar值。当为列指定了该属性时,将以区分大小写的方式排序。与之相反,忽略binary属性时,将使用不区分大小写的方式排序。
3.default:设置默认值如default '0'
4.index:索引
5.not null:不允许向该列插入null值。
6.null:与上面相反,但不代表空或者0
7.primary key:指定为主键的列
8.unique:列的值不重复,只是null值可以重复。
9.zerofill:zerofill属性可用于任何数值类型,用0填充所有剩余字段空间。例如,无符号int的默认宽度是10;因此,当“零填充”的int值为4时,将表示它为0000000004。