目录 start
目录 end
|2018-06-14| 码云 | CSDN | OSChina
sudo apt-get update
sudo apt-get install mysql-server mysql-client
sudo netstat -tap | grep mysql
sudo /etc/init.d/mysql restart
status
或者 show variables like 'character_set_%
配置
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
下添加一行: character-set-server=utf8
[client]
下添加 default-character-set = utf8
bind-address
重启
sudo systemctl restart mysql
windows上就直接 MySQL-Font HeidiSQL Linux就终端了..虽然wine也能装这俩 | 10个Mysql图形客户端
CREATE DATABASE
test2DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
create database name;
以下的 -p -h 参数依数据库的配置情况而定
mysqldump -uroot -pmysql -d dbname > /data/backup/sql/dbname.sql
source /path/to/dbname.sql
java操作:mysql数据库导入、导出 主要的思想是Java调用系统命令行执行命令后得到导出文件, 然后读取导出的文件 进一步操作
create table name (field int, field varchar(32)....);
show create table name;
重命名表格 RENAME TABLE old TO new
alter table name add field1 int, field2 varchar(20);
alter table name drop column field1, drop column field2;
保障数据安全性,提高查询效率
CREATE [ALGORITHM]={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名 [(属性清单)]
AS SELECT 语句
[WITH [CASCADED|LOCAL] CHECK OPTION];
tips:创建试图时最好加上WITH CASCADED CHECK OPTION参数,这种方式比较严格,可以保证数据的安全性
CREATE TRIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @sum = @sum + NEW.amount;
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW
BEGIN
.......
END
-- 【loop】 要有iterate 和leave才是完整的
CREATE PROCEDURE doiterate(p1 INT)
BEGIN
label1: LOOP
SET p1 = p1 + 1;
IF p1 < 10 THEN ITERATE label1; END IF;
LEAVE label1;
END LOOP label1;
SET @x = p1;
END
call doiterate(7);
select @x;
---函数部分,修改定界符
delimiter //
CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
RETURN CONCAT('Hello, ',s,'!');
//
--将定界符改回来,是第二句SQL语句
delimiter ;
select hello('Myth ');
drop function hello;
-- 函数
create function fun_test(var1 int,var2 varchar(16)) returns int
begin
declare temp int;
select count(*) into temp from test;
return temp;
end;
select fun_test(8,'d');
查看mysql数据库连接数、并发数相关信息。
show status like 'Threads%';
alter table 表名 add constraint (PK_表名) primary key (j,k,l); 关于一些约束条件constraint好像没有起到作用比如 check
rename table table1 to table2; 切记不可随便修改表名,改了就要修改相应的 外键,触发器,函数,存储过程!!!
delimiter 任意字符除了转义字符:\
create table temp as select * from test;
show processlist 如果是普通用户,只能查看自己当前的连接状态
show table status like 'assitant' 可以看到当前自动增长的id当前值 dev.mysql.com/downloads/mysql/#downloads
-- 时间格式的简单操作:
select DATE_FORMAT(produceDate, '%Y') as yeahr from historybarcodesort
where DATE_FORMAT(produceDate, '%Y')='2013'
select date_format('1997-10-04 22:23:00','%y %M %b %D %W %a %Y-%m-%d %H:%i:%s %r %T');
显示结果:97 October Oct 4th Saturday Sat 1997-10-04 22:23:00 10:23:00 PM 22:23:00
-- 查询指定时间:
get_date = "2006-12-07"
SELECT count(*) FROM t_get_video_temp Where DATE_FORMAT(get_date, '%Y-%d')='2006-07';
SELECT count(*) FROM t_get_video_temp Where get_date like '2006%-07%';
-- 问题:为什么 5.5的环境下运行两句命令得到不同的结果(5.6不会有错误)
-- 没错误
creata table test1(one_time timestamp not null default current_timestamp,two_time timestamp);
-- 报错:Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
create table test2(one_time timestamp,two_time timestamp not null default current_timestamp);
或者 将timestamp 改成datetime 也不会有错,那么问题来了 区别是什么?
-- 上面报错原因不明,大意是只能有一个timestamp的列有默认值
DATETIME、DATE 和 TIMESTAMP 区别:
“完整”TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的显示尺寸创造 最常见的显示尺寸是6、8、12、和14。 你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14 列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数。
列如: 定义字段长度 强制字段长度
TIMESTAMP(0) -> TIMESTAMP(14)
TIMESTAMP(15)-> TIMESTAMP(14)
TIMESTAMP(1) -> TIMESTAMP(2)
TIMESTAMP(5) -> TIMESTAMP(6)
所有的TIMESTAMP列都有同样的存储大小, 使用被指定的时期时间值的完整精度(14位)存储合法的值不考虑显示尺寸。 不合法的日期,将会被强制为0存储
自动更新第一个 TIMESTAMP 列在下列任何条件下发生:
alter table `Bookinfo` add constraint `F_N` foreign key `F_N`(`classno`) references `Bookclass`(`classno`) on delete cascade on update cascade;
if ... then
elseif ... then (注意elseif中间没有空格)
end if;
select host,user,password from user ;
show grants for zx_root;
创建本地超级用户: CREATE USER 'myth'@'localhost' IDENTIFIED BY 'ad';
授予所有权限 GRANT all privileges ON . TO 'myth'@'localhost';
创建远程访问指定数据库用户 : CREATE USER 'myth'@'%' IDENTIFIED BY 'ad';
授予数据库db的所有权限 GRANT all privileges ON db.* TO 'myth'@'%';
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
SET PASSWORD FOR 'username'@'%' = PASSWORD("123456");
flush privileges;
drop user 'username'@'host'
/etc/mysql/mysql.conf.d/mysqld.cnf
,注释掉 bind_address 一行 % 匹配所有主机
localhost localhost不会被解析成IP地址,直接通过UNIXsocket连接
127.0.0.1 会通过TCP/IP协议连接,并且只能在本机访问;
::1 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1
rename user feng to newuser;
flush privileges;
数据库中最主要的还是查询, 多角度复杂的查询
全自段模糊查询
select * from target where concat(ifnull(host, ''), ifnull(username, '')) like '%localhost%' > 0 limit 0,1;
select * from target where host like '%localhost%' or username like '%localhost%' limit 0,1;