技术&日志

MySQL使用记录

mysql官方文档

查mysql当前版本: 1. select version(); 2. $ mysql -V
选择数据库: use 库名 use db
导出整个数据库: mysqldump -u 用户名 -p 数据库名 > 导出的文件名
导出某个表: mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
导出表结构: mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql

导入数据库: mysql> source d:\wcnc_db.sql tip: 需要登录数据库

复制表结构: create table 复制后的表 like 被复制的表 create table ct1 like t1;
生成别名: select 表名 as 别名 from 表名; 例子:select name as from t1; 可加或不加 as

更多导入导出操作

root密码修改: 更多方式

mysql -u root

mysql> use mysql;

mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';

mysql> FLUSH PRIVILEGES;

乱码情况分析处理

  • 服务器级别
  • 数据库级别
  • 数据表级别
  • 数据表字段级别
  • 修改数据表的字符集,但是默认的情况下字段的字符集不会更改,所以我需要使用alter table 这种方法再将字段的字符集进行修改
  • mysql_set_charset(‘utf8’); PHP文件中设置字符集
  • 命令行中设置字符集set names utf8

PDO乱码处理

$pdo = new PDO($dsn, $user, $pwd);           //实例化对象
$pdo->query("set names utf8"); 

页面乱码的问题:

  • 你的编辑器的字符集要是utf-8无bom的格式
  • 你的header头

PHP: header('content-type:text/html;charset=utf-8');
HTML: <meta charset='utf-8' />

字段属性

主键: primary key
自增: auto_increment

create

创建表

create table tutorials_tbl(
   tutorial_id INT NOT NULL AUTO_INCREMENT,
   tutorial_title VARCHAR(100) NOT NULL,
   tutorial_author VARCHAR(40) NOT NULL,
   submission_date DATE,
   PRIMARY KEY ( tutorial_id )
);

insert

往数据库增加一条数据: insert into 表名 (字段名) values ('值'); insert into t1 aa values('aaa');
插入其它表数据: insert into 插入数据表的表名 select 要查的字段 from 目标表名 insert into t1 select id,name from dt1;

read

查看数据库: show database;
查看数据库中的表: show table;
查看表结构: DESC 表名
查看创建表时的结构: show create table 表名 例子-show create table t1
查看创建库时的结构: show create database 库名 例子-show create database d1
查看完成的表结构(包括注释): show full fields from tablename
查看数据表的信息: select 字段名 from 表名
查看多个条件中的信息: select 字段名 from 表名 where 字段名 in(条件); 例子- select name from t1 where id in(1,2,3,4,);
搜索某个条件中的信息: select 字段名 from 表名 where 字段名 like '%条件值%';
分组查看:select 字段名 from 表名 group by 字段名 例子:select name from t1 group by class;
按字段名排序:select 字段名 from 表名 order by 字段名 desc 例子:select name from t1 order by id desc; 说明asc 由小到大排序 desc由大到小排序

子查询用法(多条件): select * from ta_member where broker_uid in (select uid from ta_member where(type=2));
通过聚合条件去找交集: select id,count(id)as count from ta_resume_term where tid=12 || tid = 23 group by id having count=1;
数组交集 同一个字段 多次使用in的方式可以查出数据的交集:

SELECT 
`uid`,`type`,`broker_uid`,`nickname`,`sex`,`birthday`,`qq`,`score`,`signature`,`head_img`,`enname`,`user_type`,`cities`,`company`,`login`,`reg_ip`,`reg_time`,`last_login_ip`,`last_login_time`,`status`,`mobile`,`email`,`artists_total`,`recommend`,`audition_num`,`hits`,`ta_flag`
 FROM `ta_member` WHERE `type` = 1 AND `uid` IN (110) AND uid IN 
(134,135,140);

统计一个表有多少条数据: select count(*) from 表名 例子 select count(*) from t1
去除重复值: select distinct 字段名 from 表名; 例子: select distinct name from t1 注:只能筛选一个字段的
内联内容: select concat(字段名,’:’,字段名) as 别名 from 表名 例子 select concat(name,’:’,class); 可用于无限分类上
数学函数 总和 sum 平均值 avg 最大数 max 最小数 min select sun(age),avg(age),max(age),min(age) from stu;

update

改字段名和属性:alter table modify 被修改字段 新字段 新属性 alter table modify aa bb int;
改表中某个数据信息: update 表 set 字段名='修改的信息' where 字段名=条件; update t1 set name=’zs’ where id=1;
更改表名: alter table 表名 rename to 新表名

delete

删除表数据: 1) delete from 2) truncate table, 两种方式都可以删除表 1) 删除还会保留表的一些属性, 如自增等 2) 删除后就像表是新建的状态, 还有删除的效率比1)快. 更多>>
删除数据库: drop database 库名 例子-drop database tdb1
删除字段: alter table 表名 drop 字段名 例子- alter table t1 drop name;
删除表中的数据: delete from 表名 (不加where条件会删除整个表) 例子 delete from t1 例子2 delete from t1 where id = 1;
关联删除: DELETE u,b FROM ks_ucenter_member u INNER JOIN ks_member_business b ON u.id = b.uid WHERE u.username LIKE 'test_%';
删除表: drop table 表名例子-drop table t1
删除某个字段: ALTER TABLE table_name DROP COLUMN field_name;

配置

liunx数据库表名不区分大小写: 配置文件-/etc/my.cnf lower_case_table_names=1 更多>>