Mysql反引号作用:防止字段名与关键字重复,所以给字段名加上反引号
显示当前mysql版本和当前日期:select version(),current_date;
Mysql数据库中常用字段类型:
整数型:TINYINT,SMALLINT,INT,BIGINT小数型:FLOAT,DOUBLE,DECIMAL(M,D)
字符型:CHAR,VARCHAR (可变长度)日期型:DATETIME ,DATE,TIMESTAMP (时间戳)
备注型:TINYTEXT ,TEXT ,LONGTEXT
NOT NULL 不允许为空 auto_increment 自动累加
mysql表格操作命令:
创建数据表: create table 表名(列名1 属性,列名2 属性...);
查看表结构: describe 数据表名 (行名) 可以只显示数据表的一行结构,可以简写成desc show columns from 表名 效果一样
注意表结构和数据记录的区别,表结构中没有数据,列和行也要注意
修改表结构: alter table 表名 一系列操作 可以增加或删除列、创造或消去索引、改变现有列的类型、重新命名列或表等。注意:针对的是表格的结构,不是数据
删除一个字段: alter table 表名 drop 字段名 插入一个字段: alter table 表名 add 新字段 after 原字段
重命名表格: rename table 表名1 to 表名2
删除数据表: drop table 表名
mysql语句操作命令(操作对象都是数据记录):
插入记录: insert into 数据表名(列名1,列名2...) values (value1,value2); 省略列名则要输入所有的value值
SELECT 查询字段 FROM 表名 WHERE 条件 查询字段: 可以使用通配符* 、字段名、字段别名 表名: 数据库.表名 ,表名 常用条件: = 等于、<> 不等于、< 小于 、> 大于、in 包含、not in 不包含、like 匹配、between 在范围、not between 不在范围 条件运算: and 、 or 、 ( )
查询记录: select 列名1,列名2... from 表名 where 条件(如:id=1) order by id(按id排序) desc limit n,m;
“*”表示全部 分组语句:group by 排序语句:order by 排序默认升序,desc关键词设定降序排序,还可以复合排序,如:order by id desc,date asc 先按id降序,再按日期升序 指针查询:limit 选取第n个开始的m长度个数据(n从0开始),limit 0,5等价于limit 5
这三个要先 group by,再 order by,最后 limit
COUNT(*) 统计函数 MAX(*) 最大值函数 MIN (*) 最小值函数 AVG(*) 平均值函数 SUM(*) 累计值函数(∑)
select max(id) from cdn
可以进行多个表格同时查询,也就是连接查询,在from子句中,表名用“,”隔开,可以用“表名.列名”的形式
模式匹配:“_”匹配任何单个字符,“%”匹配任意数目字符(包括零个字符) 不要使用“=或!=”,这是精确表示的,模糊查询要使用“like或not like”比较操作符
select * from cdn where name like "CM%"; 查找以CM开头的名字 select * from cdn where name like "___"; 查找三个字的名字
还能用:Where (a=3 or b=3 or c=3) and m=1
select * from cdn\G; 每行显示一条信息,更加清晰
《细说PHP》对select这部分讲得比较全面,深入
修改记录: update 表名 set 列名1=value1,列名2=value2... where 条件 ( where 条件 与 select 相同)
删除记录: delete from 表名 where 条件 删除的是一行,没有where则删除所有数据行
mysql数据库备份: mysqldump -uroot -p密码 数据库名 (表名) > 储存路劲和文件名
mysql数据库恢复: mysql -uroot -p密码 数据库名 < 储存路劲和文件名 (cacti导入数据库的命令)
查看mysql编码方式:
show create table 表名 此命令最后一个字段 CHARSET 显示的就是创建表时使用的编码
show variables like 'character%'; show variables like 'collation%'; 这两个命令输出的变量名的值就是系统的默认编码值,latin1是瑞典语
设置mysql编码方式:
set names gbk; 此命令告诉服务器, 我用的是 gbk 编码, 我希望你也给我返回 gbk 编码的查询结果 相当于执行: set character_set_client = gbk; set character_set_results = gbk; set character_set_connection = gbk;
create database 库名 character set gbk; 创建数据库时就设置编码,也可以在创建表时设置
alter database 库名 character set utf8; 修改数据库编码为utf8
alter table 表名 character set utf8; 修改表格编码为utf8
alter table 表名 change 字段名 字段名 varchar(50) character set utf8; 修改字段编码
char(M) 存储空间定长,为M字节 varchar(M) 存储空间可变,L+1字节
创建视图: 视图的英文是view,是一种虚拟存在的表,相关的数据来自于查询中使用的表,且是动态生成的
create [or replace] view view_name as selectlist
如果有[or replace]子句,可以替换已有的视图 selectlist 是一种SELECT语句,它给出了视图的定义,该语句可从基表或其他视图进行选择
例: CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2 create view vgetfeeinfo as( select n.node_id, n.node_name, from idcfee_node n, idcfee_billing_status s, where b.billing_status_id = s.bs_id and b.node_id = n.node_id );
登陆 mysql 的情况下修改密码: update user set password=password('hello1234') where user='root'; 修改密码 flush privileges; 更新授权
创建一个 用户firstdb(密码firstdb),将 数据库firstdb 的权限赋予 用户firstdb grant all on firstdb.* to firstdb identified by 'firstdb' flush privileges; 会自动创建用户firstdb
grant all on *.* to 用户名@地址 identified by "密码";
all: 代表所有权限,包括insert,select,update等 *.*: 第一个代表所有数据库,第二个代表所有表 用户名:自己设定,没有则自动创建 地址: IP地址或域名,默认是localhost 密码: 对应用户名的登陆密码
创建超级用户 grant all privileges on *.* to user@localhost identified by "passwd" with grant option;
|