MySQL和SQL入门

1.1 MySQL基础

1.1.1 新增账户

1、新增账户

create user 'sampdb'@'localhost' identified by 'secret';

2、授权

grant all on sampdb.* to 'sampdb'@'localhost';

1.1.2客户端连接服务器

1、连接命令

mysql options

opitons可以用或者不用空格, 常见的命令:

mysql -h host_name -u user_name -p 

  • -h host_name (替换形式:--host=host_name)

待连接的mysql服务器主机名。如果客户端就在服务器上,此项可以省略。

  • -u user_name(替换形式:--user=user_name)

mysql用户名

  • -p (替换形式:--password)

mysql会提示输入口令。也可以-p 后面加上口令(不允许空格),但是不太安全,不建议。

2、断开连接命令

quit

exit

\q

Unix系统下,ctrl+D

1.1.3 执行SQL语句

  • “;”或者\g结尾。

  • \G竖排显示结果,没行一个值。

  • \c清除输入

  • 语句不区分大小写,以下几条是等效的:

  • 可以将语句放在文件里执行

比如,myscript.sql文件里放了一条语句:

select now(),user(),version();

1.1.4 创建数据库

1、创建数据库

create database db_name;

2、查询是否选用数据库

select database();

null表示没有选用数据

3、选用数据库

use db_name;

或者在连接mysql服务器的时候选用数据库(推荐)

mysql options db_name

1.1.5 创建数据表

1、建表命令

create table table_name(column_specs);

  • table_name

表名

  • column_specs

该表里的各个数据列以及各个索引(如果有点话)的定义

数据列定义:数据列名字  数据类型  其它属性。

2、查看表结构

describe table_name;

desc table_name;

explain table_name;

show couluns from table_name;

show fields from table_name;

还可以用通配符“%”过滤

另外:

show tables

列出当前默认数据库中的数据表。

show databases;

列出所连接的服务器上的数据库。

客户程序mysqlshow

  • mysqlshow options

列出一份数据库清单。

  • mysqlshow options db_name

列出指定数据库中的表

  • mysqlshow options db_name table_name

列出表中的所有列的信息。

3、建立其它示例表


DROP TABLE IF EXISTS student;

CREATE TABLE student

(

  name       VARCHAR(20) NOT NULL,

  sex        ENUM('F','M') NOT NULL,

  student_id INT UNSIGNED NOT NULL AUTO_INCREMENT,

  PRIMARY KEY (student_id)

) ENGINE=InnoDB;


DROP TABLE IF EXISTS grade_event;

CREATE TABLE grade_event

(

  date     DATE NOT NULL,

  category ENUM('T','Q') NOT NULL,

  event_id INT UNSIGNED NOT NULL AUTO_INCREMENT,

  PRIMARY KEY (event_id)

) ENGINE=InnoDB;


DROP TABLE IF EXISTS score;

CREATE TABLE score

(

  student_id INT UNSIGNED NOT NULL,

  event_id   INT UNSIGNED NOT NULL,

  score      INT NOT NULL,

  PRIMARY KEY (event_id, student_id),

  INDEX (student_id),

  FOREIGN KEY (event_id) REFERENCES grade_event (event_id),

  FOREIGN KEY (student_id) REFERENCES student (student_id)

) ENGINE=InnoDB;

-- 

-- InnoDB储存引擎会为出现在外键定义里的数据列自动创建一个索引,但是一般不是我们想要的,所以我们手动指定一个


DROP TABLE IF EXISTS absence;

CREATE TABLE absence

(

  student_id INT UNSIGNED NOT NULL,

  date       DATE NOT NULL,

  PRIMARY KEY (student_id, date),

  FOREIGN KEY (student_id) REFERENCES student (student_id)

) ENGINE=InnoDB;

1.1.6 添加新的数据行

1、利用insert语句添加数据

(1)一次性列出全部数据列的值

insert into table_name values(value1, value2, ...);

或者

insert into table_name vallues(...),(...),...;

auto_increment指定的列插入null会自动生成一个序号。

批量插入比单条插入服务器执行效率高

(2)指定列赋值

insert into table_name(column_name1, column_name2, ...) values(value1, value2, ...);

或者

insert into table_name(column_name1, column_name2, ...) values(...),.(...),...;

(3)用 set col_name=value对数据进行赋值

insert into table_name set col_name1=value1, col_name2=value2, ...;

2、通过读取文件来添加数据

  • 文件中存的是insert语句

(1)使用mysql客户端程序

mysql options db_name < file_name

2、进入mysql,source命令读取文件

source filename;

  • 文件存储的是纯数值

3、进入mysql,用load data命令读取文件

load data local infile 'filename' into table table_name;

如果在mysql服务器上执行这条语句,可以如果省略了local。

4、使用mysqlimport客户端程序

mysqlimport options --local db_name table_name.filesuffix1.filesuffix1;

mysqlimport程序会生成load data语句,文件名第一个“.”号前面的名称为将要导入的表的名称。

1.1.7 查询信息

注意:

1、数据库和表名称在windows系统不区分大小写,在Unix系统上区分。

2、字符串的比较操作通常不区分大小写。

3、对于包含null值得数据行,如果按升序排序将会出现在开头,如果按降序排序将会出现在末尾。要想让升序时包含null的行排在末尾,得增加一个排序数据列来区分null值和非null值。

4、随机返回几条数据,可以联合使用order by rand()和limit n。

5、如果别名中有空格,用引号括起来。

6、count(数据列名称),统计非空数据。

7、with rollup生成超级聚合。

1.1.8 删除或更新数据行

1.2 与客户程序mysql交互的技巧

1.2.1 简化连接过程

简化连接过程的三种方式:

(1)使用一个选项文件;(可以供mysql,mysqlshow,mysqlimport等客户端程序使用)

[client]

host=localhost

user=sampdb

password=secret

(2) 利用shell的历史命令功能

(3)利用shell别名或脚本

  • shell别名

想要让别名每次登陆系统都生效,就得吧alias命令放在shell的某个shell启动文件下。

  • 脚本

1.2.2减少输入查询命令式的打字动作

(1)在mysql查询命令窗口编辑

(2)复制+粘贴

(3)用mysql程序执行脚本(mysql options -t 数据库 < 文件名 或者  进入mysql用source)

-t是为了格式化查询结果与在命令窗口查询的格式一致,不加就是以制表格分隔。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值