Mysql学习(二)

  • Mysql查询当前时间
mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2020-04-19 |
+------------+
1 row in set (0.02 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2020-04-19 17:44:34 |
+---------------------+
1 row in set (0.00 sec)

mysql> select DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s') from dual;
+----------------------------------------+
| DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s') |
+----------------------------------------+
| 2020-04-19 17:38:43                    |
+----------------------------------------+
1 row in set (0.00 sec)

下列修饰符可以被用在format字符串中:

%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4%y 年, 数字, 2%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。
View Code

 

1. Mysql修改用户密码

转载:

mysql修改用户密码的方法及命令

方法1: 用SET PASSWORD命令 
首先登录MySQL。 
格式:mysql> set password for 用户名@localhost = password('新密码'); 
例子:mysql> set password for root@localhost = password('123'); 

方法2:用mysqladmin 
格式:mysqladmin -u用户名 -p旧密码 password 新密码 
例子:mysqladmin -uroot -p123456 password 123 

方法3:用UPDATE直接编辑user表 
首先登录MySQL。 
mysql> use mysql; 
mysql> update user set password=password('123') where user='root' and host='localhost'; 
mysql> flush privileges; 

方法4:在忘记root密码的时候,可以这样 
以windows为例: 
1. 关闭正在运行的MySQL服务。 
2. 打开DOS窗口,转到mysql\bin目录。 
3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。 
4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。 
5. 输入mysql回车,如果成功,将出现MySQL提示符 >。 
6. 连接权限数据库: use mysql; 。 
6. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。 
7. 刷新权限(必须步骤):flush privileges; 。 
8. 退出 quit。 
9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

2. 关于MySQL数据库的默认编码

 

查看数据库的编码,有如下两种方式,
(1)使用status命令
mysql> status;

 

(2)使用show variables命令
mysql> show variables like 'char%';

 

如果要查看某个数据库的编码,在运行上面的命令前,应先执行use db_name;命令切换数据库(db_name为要查看的数据库名)。

 

2. 改变MySQL数据库的默认编码

安装MySQL数据库时的默认编码是latin1,实际使用时可能要使用其他编码。下文描述如何将默认编码改为utf8:

首先修改MySQL的配置文件/etc/mysql/my.cnf:
在[client]下追加:
default-character-set=utf8
在[mysqld]下追加:
character-set-server=utf8
在[mysql]下追加:
default-character-set=utf8

修改完毕后,使用如下命令之一重启mysql服务:
service mysql restart
/etc/init.d/mysql restart

改变后,之前手工创建的数据库如未显式指定编码,则其编码仍是默认的latin1,可使用如下命令更改编码:
mysql> alter database db_name CHARACTER SET utf8;
————————————————
原文链接:https://blog.csdn.net/wangnan537/article/details/47819167

 

设置完utf8后,使用 source D:/mysql.sql; 执行sql语句插入记录,插入汉字出错,明显是因为编码的问题。
#查看并改变一个表的字符集
show create table user;
alter table user character set utf8;

#检查数据表所有字段的状态:SHOW FULL COLUMNS FROM user;
#改变一列的字符集:alter table user change name name varchar(20) character set utf8 collate utf8_unicode_ci not null default '';

MySQL:ERROR 1366 (HY000)错误解决:https://blog.csdn.net/jiazhangyierzi/article/details/81215831

Window的CMD窗口,使用utf8:chcp 65001

 

3. 创建视图

#创建视图(with check option 表示不允许修改该视图的数据)
create or replace view view_test 
as
select user_name name, age, address from user
with check option;
#通过 show tables; 可以看到该视图

 

4. 主表、从表

主表
在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识。
从表
以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。属从表与主表通过外键进行关联查询。

关系及用法概述:
从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。主表可用于存储主要信息,如客户资料(客户编号,客户名称,客户公司,客户单位等),从表用来存储客户扩展信息(客户订单信息,客户地址信息,客户联系方式信息等)

一般来说,主表与从表是一对多的关系。例如:老师 --> 学生

# 主表
create table tb_teachers (
    id int(10) primary key comment '教师编号',
    name varchar(20) not null comment '教师的名字'
)comment='存教师信息的表';

insert into tb_teachers values(1001,'白岩松');
insert into tb_teachers values(1002,'杜甫');

# 从表
create table tb_students (
    id int(10) primary key comment '学生编号',
    name varchar(20) not null comment '学生的名字',
    teacher_id int(10) comment 'FOREIGN KEY 老师的编号',
    #使用表约束语法建立外键约束,并指定约束名为 student_teacher_fk
    constraint student_teacher_fk foreign key(teacher_id) references tb_teachers(id)
    on delete cascade  #也可以用 on delete set null
)comment='存学生信息的表';

insert into tb_students values(1,'Lee', 1002);
insert into tb_students values(2,'Wang', 1001);

#删除外键约束
alter table tb_students drop foreign key student_teacher_fk;
#添加外键约束
#(on delete cascade :表示删除主表记录时,把参照该主表记录的从表记录全部级联删除)
#(on delete set null :表示删除主表记录时,把参照该主表记录的从表记录的外键设为null)
#当没有写 on delete cascade 或 on delete set null 时,是无法删除主表中被引用的记录的。
alter table tb_students add constraint student_teacher_fk foreign key(teacher_id) references tb_teachers(id);
alter table tb_students add constraint student_teacher_fk foreign key(teacher_id) references tb_teachers(id) on delete set null;

 


 

 

 

******************

posted @ 2020-04-18 22:12  htj10  阅读(147)  评论(0编辑  收藏  举报
TOP