mysql命令行中执行sql的几种方式总结

avatar
作者
筋斗云
阅读量:42

+---------------------+

5.mysql命令执行sql,并将查询结果保存到文本中

a)执行简单sql

mysql -uaHmin -proot test -e "select now()" -N >H:/work/target1.txt

如果sql很长,这种方式就不是很适合了。

b)执行复杂sql

可以将复杂的sql事先编辑好,存放到文本中在执行。

H:> mysql -uroot -pmypwH -h127.0.0.1 -p3306 test < H:/work/source.sql > H:/work/target.txt

将最后一种执行方式加上操作系统的定时任务,就可以在mysql中实现定时执行sql,并保存执行结果的目的了。

参考:官方文档中的 3.5. Using mysql in Batch Mode

以上就是小编为大家带来的mysql命令行中执行sql的几种方式总结全部内容了,希望大家多多支持查字典教程网~

MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。

1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -u root –p,之后两次输入root用户的密码),查看数据库的编码方式命令为:

>show variables like 'character%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | latin1 || character_set_connection | latin1 || character_set_database | latin1 || character_set_filesystem | binary || character_set_results | latin1 || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir | /usr/share/mysql/charsets/ |+--------------------------+----------------------------+

从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8;

其中,character_set_client为客户端编码方式;

character_set_connection为建立连接使用的编码;

character_set_database数据库的编码;

character_set_results结果集的编码;

character_set_server数据库服务器的编码;

只要保证以上四个采用的编码方式一样,就不会出现乱码问题。

另一个查看数据库编码的命令:

>show variables like ‘collation%';

2、linux系统下,修改MySQL数据库默认编码的步骤为:

ü 停止MySQL的运行

/etc/init.d/mysql start (stop) 为启动和停止服务器

ü MySQL主配置文件为my.cnf,一般目录为/etc/mysql

var/lib/mysql/ 放置的是数据库表文件夹,这里的mysql相当于windows下mysql的date文件夹

ü 当我们需要修改MySQL数据库的默认编码时,需要编辑my.cnf文件进行编码修改,在linux下修改mysql的配置文件my.cnf,文件位置默认/etc/my.cnf文件

找到客户端配置[client] 在下面添加

default-character-set=utf8 默认字符集为utf8

在找到[mysqld] 添加

default-character-set=utf8 默认字符集为utf8

init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

修改好后,重新启动mysql 即可,重新查询数据库编码可发现编码方式的改变:

>show variables like 'character%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8 || character_set_system | utf8 || character_sets_dir | /usr/share/mysql/charsets/ |+--------------------------+----------------------------+

此方法用于标准mysql版本同样有效,对于/etc/my.cnf文件,需要从mysql/support-files的文件夹cp my-large.cnf一份到/etc/my.cnf

3、windows系统下可以删除MySQL数据库,并重新安装,在安装过程中可以直接用Mysql Server Instance Config Wizard 进行设置

4、当MySQL数据库服务器已经有数据不适合删除重装时,可以个别指定数据库的编码方式。MySQL指定编码的方式是非常灵活并多样化的,可以指定表级别的编码,行级别编码,甚至可以指定字段级别的编码。

以下示例给出创建数据库时指定编码的两种方式:

1)CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE utf8_general_ci;

2)create database if not exists netctoss default character set utf8;

5、如果你采用的是外部接入的方式,可以在连接中确定请求的编码格式如:jdbc:mysql://localhost:3306 /mysql?useUnicode=true&characterEncoding=utf-8(注意:不要出现任何空格,否则出错)

6、执行脚本:指定编码格式set names gbk(注意,不是UTF-8)可以修改

执行前:

执行后:

从执行命令前后可知,set names gbk只可以修改character_set_client、character_set_connection、 character_set_results的编码方式,并且这种修改是窗口级别的,只针对本窗口有效,打开另外一个窗口修改无效。也可发现数据库底层的编码方式没有改变,插入数据后还是以utf8编码方式保持。

以上就是小编为大家带来的MySQL查看和修改字符编码的实现方法全部内容了,希望大家多多支持查字典教程网~

1:数据定义语言(DDL)

用于创建、修改、和删除数据库内的数据结构,如:1:创建和删除数据库(CREATE DATABASE || DROP DATABASE);2:创建、修改、重命名、删除表(CREATE TABLE || ALTER TABLE|| RENAME TABLE||DROP TABLE);3:创建和删除索引(CREATEINDEX || DROP INDEX)

2:数据查询语言(DQL)

从数据库中的一个或多个表中查询数据(SELECT)

3:数据操作语言(DML)

修改数据库中的数据,包括插入(INSERT)、更新(UPDATE)和删除(DELETE)

4:数据控制语言(DCL)

用于对数据库的访问,如:1:给用户授予访问权限(GRANT);2:取消用户访问权限(REMOKE)

问:什么时候使用DROP?什么时候使用DELETE?

答:由上可看出,对于结构删除,如数据库删除、表删除、索引删除等当使用DROP;而对于数据的删除则是DELETE.

管理数据库和表

1:创建数据库-----CREATE DATABASE 数据库名

例如:CREATEDATABASE Instant

创建表-----CREATE TABLE 表名(列名 列数据类型 );

例如:CREATE TABLE Student(

Id INT PRIMART KEY;

Name VARCHAR(50));

注意:如创建本地临时表(仅仅在创建临时表的连接中可见),在表名前加#;如创建全局临时表(对所有连接可见),在表名前加##;

创建索引-----CREATE INDEX 索引名 ON 表名 (列名。。。);

例如:(非唯一索引)CREATE INDEX NameIndex ON Friend (Nmae);

(唯一索引)CREATE UNIQUE INDEX NameIndex ON Friend (Name );

2:连接数据库---USE 数据库名

例如:USEInstant;

3:删除数据库-----DROP DATABASE 数据库名

例如:DROPDATABASE Instant;

删除表-----DROP TABLE 表名

例如:DROP TABLE Student;

删除索引---DROP INDEXFriend.PhoneNoIndex;(需指定表名和索引名)

4:复制表-----SELECT * FROM My_Friends FROM Friends;(此复制并不能复制表的约定)

复制表结构不复制数据:SELECT * FROM My_FriendsFROM Friends WHERE 1=0;

5:修改表-----

1:添加新列。。ALTERTABLE Friends ADD Address VARCHAR(50);

2:更改定义...ALTERTABLE Friends MODIFY Phone DEFAULT('笔者就哦');

3:删除列。。ALTERTABLE Friends DROP CLOUMN PhoneNo;

保证数据完整性

一:分类:

1:实体完整性;

2:域完整性;

3:应用完整性;

4:用户自定义完整性;

二:实现:

1:创建非空约束------NOT NULL

2:设置主键约束------PRIMARY KEY

3:设置唯一约束-------UNIQUE

4:指定默认约束-------DEFAULT

5:设置检查约束-------CHECK

6:自动编号列----------IDENTITY

7:外键约束----------FOREIGN KEY

使用DML语句更改数据

1:插入数据:(单行)INSERT INTO 表名 列名 VALUES 列值;

例如:INSERT INTOStudent (id,name) VALUES (1,'张三');

(多行)INSERT INTO 表名 列名 SELECT (语句)

例如:INSERT INTOStudent(id,name ) SELECT id+2,name FROM Students;

2:表复制:SELECT 列名 INTO 新表名 FROM 表名;

例如:SELECT * INTOStudent2 FROM Student;

3:更新数据:UPDATE 表名 SET 列n = 新值。。 WHERE (过滤条件);

例如:UPDATE Student SET id = 2,age =20 WHERE name = '张三'

更新来删除数据:UPDATE Student age= NULLWHERE name = '张三'

4:删除数据:DELETE FROM 表名 WHERE (过滤条

例如:DELETE FROMStudent WHERE name = '张三

注:删除全表数据除去过滤条件即可,也可使用TRUNCATE TABLE 表名

简单数据查询

1:查询:SELECT 列名 FROM 表名;

例如:SELECT id FROM Student;

查询全表数据:SELECT * FROM Student;

2: 表名前缀:SELECT Student.id FROM Student;

3:列表别名:SELECT T.列 A AS A,T.列B AS B,T.列 C AS C FROM 表 AS T;

4:计算列:SELECT id , mark*2 AS MarksFROM Student;

SELECT FirstName + ' ' +LastName AS FullName FROM Student;

5:排除重复数据:SELECT DISTINCT 列A FROM 表名;

例如:SELECT DISTINCT name FROM Student;

6:限定行数查询:SELECT TOP rowCount ColumA,ColumB FROM Table;

例如: SELECT TOP5 id , name FROM Student;

7:条件查询 WHERE

8:范围查询 BETWEEN

9:定义集合关系 IN

10:模糊查询 LIKE(单个字符_ 多个字符%)

11:空值数据控制:SELECT 列A ,列B FROM 表名 WHERE 列C IS NOT NULL;

SELECT 列A,列B FROM 表名 WHERE 列C IS NULL;

12:排序:升序。。ASC

降序。。。DESC

聚合函数与分组

1:SELECT COUNT(规范) FROM 表名;

A:数目 COUNT

B:总和 SUM

C:平均值AVG

D:最大值MAX

F:最小值 MIN

2:分组 GROUP BY..

3:结果集处理:SELECT StudentID,AVG(Mark) AS AverageMark FROM StudentExam GROUP BYStudentID HAVING AVG(Mark) 70;

4:EXISTS;

5:ALL;

6:ANY;

7:UNION;

8:保留重复行:UNION ALL;

9:交集和差分:INTERSECT EXCEPT

联接

1:内联接:JOIN

2:外连接:1:左外联:LEFT JOIN或 LEFT OUTER JOIN

2:右外联:RIGHTJOIN 或 RIGHT OUTERJOIN

3:全外联:FULL JOIN 或 FULL OUTER JOIN

以上就是小编为大家带来的细数MySQL中SQL语句的分类全部内容了,希望大家多多支持查字典教程网~

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!